CoolShell博主陈皓做了一个在线的puzzle很有意思,链接在这里,这里记录一下解题的一些步骤。
Puzzle 0
++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>>>--.++<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<.
如果之前没有听说过变态的编程语言,就让你见识一下。BrainFuck也称BF,是一门只有8个指令构成的图灵完备的语言。CoolShell博主陈皓写过一篇简单的介绍在这里
具体的指令解释不多说了,直接打长这里,把上面的指令粘进去,运行得到下一关的地址:welcome.html
。
Puzzle welcome.html
X * Y
2, 3, 6, 18, 108, ?
What is the meaning of life, the universe and everything?
生命、宇宙以及任何事情的终极答案
这题有两个线索,首先是这串数字,其次是生命、宇宙以及任何事情的终极答案
。数字序列找规律并不复杂,每个数字是前两个数字之积,那么直接用18 * 108
的结果1944
尝试进入下一关,发现只找到了一个答案。第二个答案很有意思,或者说很极客
很宅
,直接google发现和《银河系漫游指南》有关,wiki地址在这里。
用1944 * 42
的答案81648
进入下一关。
Puzzle 81648.html
macb() ? lpcbyu(&gbcq/_ 21%ocq 12 _=w(gbcq)/_dak._=}_ugb_[0q60)s+
放眼望去是Dvorak
键盘,点图片可以看到详细信息。那么意图很明显了,Dvorak
和QWERTY
键盘转换一下看看会怎么样?这里有个在线的转换工具,然后:
main() { printf(&unix[" 21%six 12 "],(unix)["have"]+"fun"-0x60);}
WTF……搜了一下,这是87年国际C语言混乱大赛的一段代码。C语言了解不多,趁这个机会了解了解戳这里,还有这里,列一些解此题的关键知识点。
- unix关键字相当于
#define unix 1
- 数组的引用,array[num]和num[array]效果相同,所以(unix)["have"] 等于"have"[unix],结果是
a
,ASCII是0x61 0x61 + "fun" - 0x60
相当于对fun
右移0x61
指针再左移0x60
指针,也就是说fun
右称一位,结果是un