震驚!圖森未來(lái)竟然在圣誕禮物中放這個(gè)!
雖然沒(méi)能入職,依然向我要了地址發(fā)了圣誕禮物,感謝圖森未來(lái)
禮物到了我迫不及待的拆開(kāi),照了兩張照片,沒(méi)錯(cuò),就是下面這兩張照片
本來(lái)我覺(jué)得禮物很不錯(cuò),畢竟都是吃的,很合我的胃口,連勺都配好了,正準(zhǔn)備吃里面的圣誕禮物...
萬(wàn)萬(wàn)沒(méi)想到的是禮物中居然還有一份兒代碼,怕看錯(cuò)了又仔細(xì)看了下,嗯...emmm,沒(méi)錯(cuò),有高亮有縮進(jìn),確定是代碼無(wú)疑了
作為程序員的我異常敏感,需求和考驗(yàn)來(lái)了!我放下了手中的勺子,走到了電腦前。
看來(lái)目標(biāo)就是需要進(jìn)入卡片下方的破譯網(wǎng)站,這個(gè)網(wǎng)站是個(gè)編譯器,能把上面圣誕樹(shù)代碼解析出來(lái),網(wǎng)站提示這個(gè)代碼是用Brain***這門(mén)語(yǔ)言寫(xiě)的,這語(yǔ)言名字,,,真給勁,,,把這些字符串都敲進(jìn)去,應(yīng)該不會(huì)很困難吧,于是老眼昏花的我就開(kāi)始敲,代碼如下:
+>+++++ +++[<++++>-]> ++++++++[<++++++ ++>-]>++++++++++[<+++ +++++++>-]<<+++++ +++++++++++++++.>++++ +++++++++++++.<-.>----------- -.++++.+++.----.-------.<<.> >++++++++++++++++++.------ --------.++++++++++.-----------.<<.>>++ +++++++++++++++.----------.+++ +++.<<.>>--------------------.<<.>-----.>++++.++ +++++++++++..+++++++.<<.>----------.>------------- ----.++++++++++.---------.++++++++++.+.-------.---------- -.++++++++++++++++++.<<+.
我覺(jué)得我代碼風(fēng)格還是挺不錯(cuò)的,縮進(jìn)的很到位,只不過(guò)高亮實(shí)在是做不到。
馬上就要運(yùn)行代碼了,有點(diǎn)學(xué)生時(shí)代兩個(gè)人傳暗號(hào)小紙條的感受,還有點(diǎn)小期待呢。滿(mǎn)懷期待的我把代碼放到了編譯器上運(yùn)行,結(jié)果如下:
emmm,這結(jié)果不太對(duì)吧,看這句話的意思應(yīng)該是:圖森祝你圣誕快樂(lè),機(jī)智的我打開(kāi)了谷歌翻譯,果然這句話的英文應(yīng)該是TuSimple wish you a Merry Christmas!
完了,果然老眼昏花敲錯(cuò)了,敲得時(shí)候我就說(shuō)可別敲錯(cuò)了,這都沒(méi)法debug。
先去看看語(yǔ)法吧,維基百科講的還是很清楚的,看完之后我覺(jué)得這門(mén)語(yǔ)言設(shè)計(jì)的真不錯(cuò),果然是wtf。
仔細(xì)看了下錯(cuò)誤,發(fā)現(xiàn)和準(zhǔn)確的英文相比其實(shí)ASCII碼就差了1,比如Dhristmbt應(yīng)該是Christmas,其中錯(cuò)的三個(gè)字符都是差了1,空格和!也是差了1,估計(jì)是少打了個(gè)符號(hào)?
萬(wàn)幸,找到了一個(gè)在線Brain***調(diào)試器,能單步調(diào)試的代碼都不是事兒
經(jīng)過(guò)調(diào)試我發(fā)現(xiàn),[]代表循環(huán)結(jié)構(gòu),其中前面的循環(huán)結(jié)構(gòu)都是在給3個(gè)連續(xù)內(nèi)存地址賦值初始化,這3個(gè)地址按順序分別用于
- 存儲(chǔ)標(biāo)點(diǎn)符號(hào)的ASCII碼
- 存儲(chǔ)大寫(xiě)字母的ASCII碼
- 存儲(chǔ)小寫(xiě)字母的ASCII碼
如下圖所示,#代表斷點(diǎn)
<和>負(fù)責(zé)向前和向后移動(dòng)指針,+和-負(fù)責(zé)給當(dāng)前值加1和減1,.負(fù)責(zé)打印,也就是從初始化之后(上圖的#位置),根據(jù).字符進(jìn)行分割,不斷移動(dòng)指針和修改ASCII碼,一個(gè)字母一個(gè)字母的打印出了TuSimple!wish!you!a!Nerry!Dhristmbt"。
根據(jù)上述結(jié)論,我發(fā)現(xiàn),,,我根本就沒(méi)打錯(cuò),,,代碼本來(lái)就有三處bug,看來(lái)果然是圖森的考驗(yàn),哈哈
修正后的代碼如下:
>+++++ //多了一個(gè)加號(hào) +++[<++++>-]> ++++++++[<++++++ ++>-]>++++++++++[<+++ +++++++>-]<<+++++ +++++++++++++++.>++++ +++++++++++++.<-.>----------- -.++++.+++.----.-------.<<.> >++++++++++++++++++.------ --------.++++++++++.-----------.<<.>>++ +++++++++++++++.----------.+++ +++.<<.>>--------------------.<<.>------.>++++.++ //少了一個(gè)減號(hào) +++++++++++..+++++++.<<.>----------.>------------- ----.++++++++++.---------.++++++++++.+.-------.---------- --.++++++++++++++++++.<<+. //少了一個(gè)減號(hào)
沒(méi)有高亮湊合看吧,結(jié)果圖如下:
總算結(jié)束了,可以繼續(xù)吃了,祝圖森未來(lái)一路順風(fēng),祝大家圣誕節(jié)快樂(lè),全劇終。
#秋招##圖森未來(lái)#