LinE · 2014/08/05 11:41
游戏地址:fun.coolshell.cn/
一个很有意思的小游戏,也很费脑子的说TAT
0-Fuck your brain
本关地址:fun.coolshell.cn/first.html
进去以后,发现一些乱七八糟的东西,下面一行提示:My brain has been fucked,通过BaiDu得知这是一种编程语言,称之为Brain Fuck(我不会说当我看到这个着实汗了一把),然后在网上找到编译器
编译器代码
#!cpp
#include <stdio.h>
int p, r, q;
char a[5000], f[5000], b, o, *s=f;
void interpret(char *c)
{
char *d;
r++;
while( *c ) {
switch(o=1,*c++) {
case '<': p--; break; case '>': p++; break;
case '+': a[p]++; break;
case '-': a[p]--; break;
case '.': putchar(a[p]); fflush(stdout); break;
case ',': a[p]=getchar();fflush(stdout); break;
case '[':
for( b=1,d=c; b && *c; c++ )
b+=*c=='[', b-=*c==']';
if(!b) {
c[-1]=0;
while( a[p] )
interpret(d);
c[-1]=']';
break;
}
case ']':
puts("UNBALANCED BRACKETS"), exit(0);
case '#':
if(q>2)
printf("- - - - - - - - - -/n%*s/n",*a,a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],3*p+2,"^");
break;
default: o=0;
}
if( p100)
puts("RANGE ERROR"), exit(0);
}
r--;
}
main(int argc,char *argv[])
{
FILE *z;
q=argc;
if(z=fopen(argv[1],"r")) {
while( (b=getc(z)) > 0 )
*s++=b;
*s=0;
interpret(f);
}
}
复制代码
把该编译器代码存为test.c
然后编译
gcc test.c -o test
复制代码
得到的test即为该语言编译器,编译的时候有俩Warning,很抱歉我无视了这个Warning…
然后将Brain Fuck的代码存为test.bf
在shell下执行即可得到答案
./test test.bf
复制代码
如图,得到第一关地址
1-Multiply
本关地址:fun.coolshell.cn/welcome.htm…
首先进去看到一个序列
2,3,6,18,108,?
复制代码
然后上面给出了算法X * Y,观察序列可得知后一个数字是前两个数的积,于是得出?地方为18*108=1944
打开fun.coolshell.cn/1944.html可以看到X已经成了红色,同时得到另