fun.coolshell.cn解题报告

coolshell前几天出的10道谜题,很有意思。先说明一下,因为觉得好玩所以里面的大多数题目我都是用C写的,不过有些题目我还是识趣地用了Python。

0-Fuck your brain


这道题涉及到Brainfuck这种程序设计语言。想了解BF请wiki,最好查英文的,中文wiki讲得不够好。

个人觉得理解BF还是很简单的,只需要把wiki里的表和helle world的程序读懂就好了。

下面理解程序:

所以答案是”welcome.html”

1-Multiply


这道题要求X * Y的值。

由2, 3, 6, 18, 108, ?知X为18 * 108 = 1944;关于Y,提示了下面这段话:

What is the meaning of life, the universe and everything?

看过《银河系漫游指南》都知道答案是42嘛,不信你可以Google

the answer to life, the universe, and everything

有彩蛋~

由1944 * 42计算得答案81648,所以下一个答题页面是http://fun.coolshell.cn/81648.html

2-keyboard


页面里有一个奇怪布局的键盘,下面有一串不知所以的字符串。当你点击键盘的时候浏览器会打开Dvorak Simplified Keyboard的wiki页面。很容易猜到这道题需要你先把下面的字符串从Dvorak Simplified Keyboard布局映射到QWERTY Keyboard布局上。

根据字符串按照QWERTY Keyboard重打一边后得到C程代码:

代码理解参考了这个博客的内容http://blog.sina.com.cn/s/blog_6adee4450100m6o9.html

首先,unix被编译器内定为一个宏,值为1。其次在c语言里数组的引用可以写成index[variable]的形式,例如a[3]可以写成3[a]

因此(unix)["have"] + "fun" - 0x60相当于"have"[1] - 0x60 + "fun"进一步可得'a' - 0x60 + "fun"因为a的ascii码为0x61,所以等式相当于把指向fun的指针往前移一位得un

&unix"\021%six\012\0"可写为&"\021unix\012\0"[1]&"unix\012\0"。而十进制\012\n的ASCII码,因此printf将输出unix。所以本题答案为unix。

3-QR Code


先扫描二维码得字符的映射关系为

[abcdefghijklmnopqrstuvwxyz] <=> [pvwdgazxubqfsnrhocitlkeymj]

然后写一个程序将”Wxgcg txgcg ui p ixgff, txgcg ui p epm. I gyhgwt mrl lig txg ixgff wrsspnd tr irfkg txui hcrvfgs, nre, hfgpig tcm liunz txg crt13 ra “ixgff” tr gntgc ngyt fgkgf.”解密。

程序如下:

程序将输出

Where there is a shell, there is a way. I expect you use the shell command to solve this problem, now, please try using the rot13 of “shell” to enter next level.

了解rot13可查阅维基百科。我们在网上找一个在线转换的网站将”shell”加密为”furyy”,所以答案为furyy。

4-cat


这道题略坑啊。反正我是去网上搜答案看了思路后写出来的。

这道题实际上是考你的观察能力和使用正则表达式的能力,你需要在网页源码中的那大段字符串里匹配出符合长度为五,第一个字符为大写字母,第二个字符为数字,第三个字符为小写字母的回文字符串。

匹配代码如下:

这样得到四个符合要求的回文字符串:E1v1E, 4FaF4, 9XrX9, O3i3O, 0MaM0, 4GbG4, M5l5M, 8SzS8, 0WeW0, Y0s0Y。取中间的字幕并且考虑到答案像cat一样是一个单词,因此答案是variables。

5-variables


这道题挺有意思的,点击页面上的图片后浏览器会打开网址为http://fun.coolshell.cn/n/2014的网页,将网页内容32722代替URL中的2014后可以打开网页内容为13310的网页,这样循环做下去直到打开网页内容为Cool! the next level is "tree"的网页,所以答案就是tree啦。

循环打开下一个网页直到输出答案的代码:

6-tree


这道题要你通过中序和后序还原二叉树,再找到最深的路径。

从题目可以看出来这是道考码代码基本功的题目,我写的时候基本没有出啥问题,一次过了。代码:

这样跑出来最深的路径是”zWp8LGn01wxJ7″。然后输入在终端输入命令:

得到答案nqueens。p.s. 这个命令是我从网上找来的,我不懂openssl==

7-N Queens


著名的八皇后问题,用回溯法。码了好久,因为对C不熟报了各种错,后面真是欲哭无泪。

注意:题目是要你找sha1( $passwd + $code + “\n” )等于e48d316ed573d3273931e19f9ac9f9e6039a4242时的code值,一定别把\n丢了

纯粹码代码写算法的题目,没啥好说的,C程新手,写得烂别见怪==

最后得到答案:953172864。

Excel Column Number


这道题要求你写一个十进制和26进制互相转换的程序,挺简单的,直接贴代码:

最后得到答案:DUYO。

9-Fraternal Organisation


这道题和编程没啥关系。首先看看源代码,发现一张图片叫”Pigpen”一张叫做”Freemason”,下面那个看不懂的图片的标题是”Combine these two words with using lowercase”。根据提示Google一下猪圈共济会就知道下面的图片是经过猪圈密码加密的。解密后得到”helloworld”,这就是答案。

通关@@C程渣渣伤不起啊

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注