欢迎光临散文网 会员登陆 & 注册

【TIS-100 攻略】隐藏关

2022-11-15 15:25 作者:ココアお姉ちゃん  | 我要投稿

本文首发于 B 站《TIS-100》文集(https://www.bilibili.com/read/readlist/rl626023)。原创不易,转载请注明出处。

翻到数据手册的倒数第二页,我们注意到数据手册上有这么一句话加上了额外的标记:

按下 F2 键可查看防篡改证书。当我们在谜题列表里按下 F2 后,屏幕显示如下:

然后点击右边的鹰,即可顺利进入隐藏关卡。

隐藏关卡里的题目变成了乱码,所以我们需要自己找出输入量和输出量间的规律:

其中一种猜想是:OUT.R 是 IN 除以 25 的值,向下取整。OUT.E 则表示 OUT.R 中的重复数字以及重复次数:[4, 2] 表示连续 4 个 2,[7, 0] 表示连续 7 个 0,依此类推。

那么,本关的算法如下:

  • 计算 IN 除以 25 并向下取整的值,输出到 OUT.R。

  • 收到第一个值时,将长度计数器置为 1。

  • 从第二个值开始,若新值 = 旧值,则令长度计数器 +1;若新值 ≠ 旧值,则向 OUT.E 依次输出长度和旧值,并将长度计数器重置为 1。

代码如下:

上方节点和中央节点配合计算 in/25 的值。先看上方节点:

  1. 上方节点可能从 in 收到一个正数,也可能收到序列末端的 -1(mov up acc)。

  2. 当收到的是 -1 时,跳到最后一行,直接向下发送 1 信号(jlz 6, mov 1 down)。

  3. 当收到的不是 -1 时,每将 in 减去一次 25(sub 25),

  4. 就向下发送一次 -1 信号(mov -1 down),

  5. 并判定:如果仍是正数,则跳回第 3 行继续减(jgz 3),

  6. 直到减到负数后,向下发送 1 信号(mov 1 down)。

再看中央节点:

  1. 中央节点来计算本次 IN/25 的商。初值设置为 -1(mov -2 acc)

  2. (add 1)

  3. 然后听从上方节点的命令(jro up)。上方每将 in 减去一次 25,就会给我们发送一次 -1 信号,我们向前跳 1 行,将商加上 1(add 1)。

  4. 上方将 in 减到负数后,会发给我们一次 1 信号,我们将算好的商(mov acc down)

  5. 向下发两次(mov acc down)。

左下角的节点用来检查本次的 R 和上次的 R 是否一致,并向下输出本次的 R:

  1. 上方会将每个 R 都发两遍,对于第一个 R,我们没有旧 R 可以比较,所以对于两次发送的首 R,我们必须要丢弃一个(mov up acc),

  2. 然后接收第二个(mov up acc),

  3. 将其送往输出口后,给右边发送一个 -1 信号(mov -1 right)。

  4. 从第二个 R 开始,我们要将每个新 R 和 acc 里的旧 R 做差值运算(sav)

  5. (sub up)并判定:

  6. 如果差值是 0,说明新 R 和旧 R 相等,我们跳回第 2 行,将新 R 放入 acc 后输出,给右边发送 -1 信号(jez 2, mov up acc, mov acc down, mov -1 right);

  7. 如果差值不为 0,说明新 R 和旧 R 不相等,我们给右边发送 1 信号(mov 1 right),

  8. 然后将旧 R 一并发给右边(swp)

  9. (mov acc right)

  10. 最后跳回第 2 行,将新 R 放入 acc 后输出,给右边发送 -1 信号(jmp 2, mov up acc, mov acc down, mov -1 right)。

右下角的节点首先将计数器清零(mov -1 acc, add 1),然后听从左边节点的命令:

  • 收到首 R 时,左边节点会发来 -1 命令,此时向上跳 1 行,将计数器置为 1(add 1);

  • 收到和旧 R 一致的新 R 时,左边节点也会发来 -1 命令,此时向上跳 1 行,将计数器加 1(add 1);

  • 收到和旧 R 不一致的新 R 时,左边节点会发来 1 命令,此时向下跳 1 行,将计数器输出给 OUT.E,同时把左边发来的旧 R 也输出给 OUT.E(mov acc down, mov left down),然后将计数器清零(mov -1 acc, add 1, jro left)。之后,左边节点还会再发来一个 -1 命令,我们向上跳 1 行,将计数器置为 1(add 1)。

点击左下角的【RUN】,稍等片刻,屏幕上会弹出一个对话框。至此你就完成了 TIS-100 游戏里的所有关卡,解锁了最终的 ILLEGAL EAGLE 成就(Find and solve the hidden puzzle,发现并解出隐藏关卡)。恭喜通关!


【TIS-100 攻略】隐藏关的评论 (共 条)

分享到微博请遵守国家法律