评论列表

Yoiii

2

卡在第30关
第二十九关串的讲解没看明白
用了笨方法 90步 160多运算才完成
到第三十笨方法粗略估计500+步
写不下去了

有高手能出来讲讲第二十九关吗

新用户513286

4

还有类似的编程游戏吗?感觉挺有意思的,适合没事的时候玩玩锻炼下算法思维。

江妗

10

不知道大家留意没,这个游戏的编程是没有终止命令的,而绝大多数任务都是靠循环的,那到底怎么样才算程序的结束呢?通过头机关,不难发现,代码走完了,程序就结束了,这个符合直觉对吧。但那些无法跳到底的程序呢,我觉得是靠触发inbox来实现的,当使用inbox时,如果输入队列为空,则程序跳出。这里就产生了一个问题,如果inbox离循环入口太远,那输出最终结果后,又得多运行几个动作才能到达inbox(null),增加总步数,如无必要,此处可优化。
程序结果的审核
一般最常见的错误是程序中意外的空手操作或类型不匹配,比如空手outbox、空手加减、空格子读取、字母加减数字等。其次,是错误输出值不符合要求,这里需要展开。
1.你往往会发现只要输出一个错误结果,程序就会报错“程序期待输出某值,而你输出某值”,所以我们觉得,这个数值一定是预先算过的,就等着看你给错了哪个,这种猜想多数情况下是成立的。
2.但还有稍不常见的错误,当你执行完毕按需输出后,程序报错“虽然你正确输出,但我能给出一个反例”,这种情况是你不完全理解题干,程序里出现某些特例不能兼顾的地方,或者投机取巧,仅仅为满足当前输入序列去产生特定的输出序列。我估计,系统在测试完当前给出的序列后,在后台对备用的所有序列都做了测试,行不通的就报错并在下次抛出这个序列。然而,系统有一个总步数评分系统,游戏作者主观上当然是希望它的备用序列在同一程序下跑分要一样,生成序列时可能用到一些理论或专业工具进行评估,但这或许还会遗留一些差异,或者说BUG,或许可以利用这些差异进行优化。
3.还有更不常见的错误,如 loop{ ... ; outbox; .... ; inbox; ... }。“你输出了所有期待的值,但输出结果过多”(如1,2,3,4, 1,3,5,7, 1)。前面提到程序结束是以inbox(null)为标志的,所以在inbox前慎用outbox。
跳转出固有思维
jump,或者我更喜欢称为goto,是程序实现条件判断、循环、子程序等的关键,高级语言中的goto、if、for、while、case、function等统统通过jump和它两个不成器的条件跳转兄弟来完成。汇编语言之所以灵活高效,跟这些“无条件”跳转指令不能说没有关系,虽然以高级语言的角度。用goto乱跳意味着以后你的代码将难以调试(write-only、通心粉代码),所以很多高级语言摒弃了类似的命令。高级语言是面向对象的,咳咳,就算面向过程至少也该可以定义几个函数不是么?即便没有函数也至少有循环语句不是么?

水之贤者

1

第八关是什么意思?我放了4个0可他还说不对

虐猫狂魔薛定谔

1

第35关花了近2小时2星过关,要求17步指令我用了15步指令。为了过关思考了很久

虐猫狂魔薛定谔

1

第31关串的反转我失败无数次,改编了无数次之后,终于三星过关。指令如下,我的第一步指令是bump+14,最开始一直是inbox,但后来出了问题一直解决不了,灵机一动想到的办法。

天灾白发

1

第二关只用25步怎么才能搞出来???只有那3个命令,怎么变也变不了啊!!!

diu~

5

不知不觉就玩了一个晚上,困的两眼都睁不开了,老婆对我有些不满,都几点还不睡

新用户31017

1

第20关用了23条指令,要求15指令。。。先通关再说,第二遍时候优化到15条指令的时候再发。。。如果有人现在想要,@我我也可发给他

新用户31017

2

28关我写了119条指令。。。爽!过了。。