如果有見證這題的原貌以及討論,應該會對我的這篇通靈失敗文以及 icube 大大的這篇「通靈概論」有所印像。
可以看到上述第一篇的立場是基於範例測資是正確的;第二篇是基於公式是正確的。
而第二篇成功猜得出題者的心思,第一篇則是得到了於此之外的題目之實相。
由這兩篇可以看出——通靈即是哲學,即是根據某種立場並試圖得到「善」的真相。
藉由探討不同立場,可以看到不同面相的真相,此即形上學之範疇。
在這題,解題者們可能會先將給定的 24 位元數字當作 RGB 編碼,我們就先當作是 RGB。所以藉由該數字 = R × 256 × 256 + G × 256 + B 而得到 R 、 G 、 B (當然,R 、 G 、 B ≦ 256)。
而什麼是「灰階」呢?若不考慮變體的話就是那些 RGB 編碼中 R = G = B 的那些顏色(所以一共會有 256 種「灰色」)。
二話不說,先帶入題目中最明顯的公式 Grey = 0.2126R + 0.7152G + 0.0722B 。想當然爾,得出的是錯誤的結果。ff00ff 得到的是 484848 而非 808080。那帶入 (R + G + B) / 3 呢?可惜也不是。
於此,看到這個競賽某些題目要去查看網頁原始碼以獲得提示。因此前往查看。乍看之下似乎沒什麼,晃著晃著就看到了 grayscale() 的函式。試著改其參數,發現會改變網頁的灰階程度。100% 是純灰階、0% 則是不套用灰階(原本的顏色)。到此可能會心裡想說是不是利用了 grayscale() 底層實作的方式,因此將其丟至 Google 搜尋。
經歷一番查找,發現了這個,裡面提及了該函式的實作方式。但是定神一看,當參數傳入 100% 時其公式即是我們最一開始帶入的該公式。天啊,這不是回到原點了嗎:(?快樂 888,絕命六龜葡萄 :(。那麼帶入其他的參數值呢?當然是不行的,因為將不會是純的「灰色」。因為根據範例,至少那些輸入的顏色得到了純灰色。
此時,你可能想到了該數字並非 RGB ,總不能因為小歐的「24bit... 就像全彩RGB那樣... ?」,就當作是 RGB 吧?更何況,小草也吐槽了「你要那樣說也不是不行啦~~~」,更是代表了給定的 24 位元不是 RGB ,就算真的是,至少也對「真相」毫無意義。
好的,先前的立場瓦解了。那麼新的立場該立於何處?為此,你可能費盡心思在題目敘述跟網頁原始碼之間來回詳讀每一句。良久,雙眼停滯在了「灰色編碼」……「灰色編碼」,為何要這麼稱呼?灰階就灰階,頂多是「灰階碼」、「灰階編碼」,或甚至是「灰階の碼」。為啥要提到了一個跟題目的「灰階」有所差異的字詞——「灰色編碼」。
「灰色編碼」,這硬翻成英文是啥?Gray……Gray Code?ㄟ等等,Gray Code?
*就在此時,你的腦袋似乎閃過了無數的畫面,那些上了無數次的、已經有點乏味的計算機概論彷彿當下一般於眼前浮現*
「好喔,丟給 Google 看看。」你這麼想著。搜尋後的結果,跳出了充斥著「格雷碼」三個字的各式條目。點進那個無法被人完全信任的維基頁面。你往下搜尋,找到了如何計算一個二進位數字相對應的格雷碼。你將該演算法套到題目給定的數字們,頓時,你的腦袋就像:
好,真棒。於是你上傳了程式碼。在離這不遠、因為一個小小的量子資訊的不同而分裂的平行宇宙,你得到了 NA 。
但是在這,就在這個預設網頁樣式白到要眼睛的壽命的頁面上,你看見了「真相」佇立於畫面上緣。
是我們所追求之物,
是一切的根本,
那是「善」
是
「AC」