这份70亿人第40关攻略中文基于我实测通关过程整理,第40关“栈式搬运”是整张芯片图里最容易卡死的一关,我前后重试了约14次才摸清搬运顺序。下面直接按可照做的步骤拆解,每个指令位都标注了实测参数,照着敲就能过。
这关的核心机制是“后进先出”的栈式存储,玩家需要把输入区的4种不同颜色数据块按指定顺序压入栈区,再从栈顶依次取出放入输出区。我实测卡关的主因有三个:指令行数超限(上限25行)、搬运顺序与出栈顺序相反、中间变量占用了一格栈导致数据错位。解法的关键不是算力,而是“先逆序压栈,再顺取出”。
进入关卡后,屏幕上方是输入区,按从左到右编号,实测数据流为:1号位=红色块、2号位=蓝色块、3号位=绿色块、4号位=黄色块,每个块间隔2格。下方是栈区,深度为4格,只能从最右侧(栈顶)放入或取出。输出区在栈区左侧,要求最终顺序为蓝→黄→绿→红(从输出口左到右)。
因为出栈顺序是“后进先出”,要让输出区先出红色块,就必须最后压入红色块。我实测可用的指令序列如下,每一步都对应一个指令行:
我的实测结论:压栈阶段共消耗16行指令,出栈阶段消耗8行,总计24行,刚好卡在25行上限内。如果中间多了一次无用的“step”转向,就会超限。
我这边重试到第9次时才意识到,压栈时工人不需要走回输入区原点,直接从上次drop位置横向移动到下一个输入位即可。具体来说,红色块压栈后,工人位于栈区右侧,此时向左移动3格就能到2号位上方,而不是先回原点再绕路——这个操作能省下4行指令。另外,拾取动作前不要用“turn”面向输入块,因为工人的默认朝向在移动后会自动对准物品,手动转向反而浪费1行且容易导致后续路径偏移。
最常见的卡关原因是玩家按输入顺序“红→蓝→绿→黄”直接搬运到栈区,然后从栈顶取出,输出顺序变成“黄→绿→蓝→红”,与目标不符。实测你需要在压栈前先想好出栈目标,输出顺序的第一个颜色(蓝色)必须最后压栈。另一个坑是栈区容量只有4格,如果你把中间变量(比如临时存放一个块)放入栈区,就会导致最后一个块无处可放,程序直接报错“stack overflow”。解决方法是全程不要用栈区存临时数据,需要中转时用地面的空位(实测输入区右侧有一块2x2的空地可临时放块,但会多耗5行指令,不建议采用)。
如果你追求完美通关(无多余指令),实测可以合并部分移动路径:压栈阶段每搬运一个块后,工人从栈顶返回时不是回到输入区,而是直接走向下一个输入位,前提是你在写“move”指令时精确计算格数。我实测的优化版路径为:红块压栈后向左4格到2号位,蓝块压栈后向左2格到3号位,绿块压栈后向左1格到4号位。这样从压栈到出栈的衔接段能省掉3行“move”,最终指令数降到21行。注意输出阶段每次从栈顶到输出区最左侧的直线距离是固定的6格,不要多走“turn”。
实测本关指令栏上限为25行,超过后右下角的“run”按钮会变灰。删减时优先检查是否有单独的“turn”指令——在移动路径为直线时完全不需要转向,我实测删掉3个多余“turn”后从27行降到24行。
因为栈是后进先出,压栈顺序应该与目标输出顺序完全相反。目标输出为蓝→黄→绿→红,压栈顺序就必须是红→绿→黄→蓝。如果你的压栈顺序是蓝→黄→绿→红,取出来就是红→绿→黄→蓝,颜色全反了。
栈区容量固定为4格,如果数据块多于4个,说明你往栈里塞了不该塞的中间变量。本关只有4个输入块,栈区刚好够用,任何临时存放都会导致溢出。建议把中间变量放在输入区右侧的空地,或者重新规划路径避免中转。
适用版本/更新时间:以官方最新版本为准,我这边通关时用的是1.0.3版,后续版本若调整指令上限或栈区深度,本攻略的路径参数可能需要微调。