Turing Complete关卡:条件判断
两个脑半球
编辑于 2025年07月31日 17:56
收录于文集
共6篇

在图灵完备游戏关卡中这一关对于没有数电知识的我卡了挺久。迷茫之中我在小破站中搜索视频攻略,但是结果并不令人满意。在此关的电路搭建看起来处理复杂,至于在用视频中的思路复现时出现了下图情况。

看到其游戏成就中还有一个关于它的成就,解锁条件是使用10个蓝色元件通关,挑战了我的好奇心,于是在周末苦心钻研。

目前有了比较清晰的解决思路。


关卡说明

可看到此条件值对应表

每行对应的状态是构建电路的依据,在为某条件时希望对输入的数值作出与0对比的布尔值输出(True or False)。

1. 关卡说明中的信息 1.1 我们先能获得哪些信息呢,我们一次看一位,一次处理一位。看向第2位,发现条件“Never”与“Always”的值分别需要输出为0和1,且它们下的三个条件分别互补。在第2位,取0,能代表前半条件;取1,能代表后半条件(前半的补集)。去除“N/A”和第2位后得到下表。

看起来好像不太方便,我做一下变换

1.2 cond1=(cond2)',但条件值相同。也就是说我们可以先处理cond1,然后再用第2位控制其结果取反就能得到cond2。某值与0的判断中只能存在=0、<0、>0之一结果。cond1中有一个<=0的判断,是将=0、<0两种情况合并。这里我们将必要的判断条件已经提取出来了,我做出了下表

2. 处理输入值

2.1 提取完关卡信息,我们开始处理输入数值。条件值和对比值两个输入都是8位,我们想要通过逻辑处理得到输入包含的信息,就得解码它。两值分别接8位分线器。

  • 条件值取前3位,将第0、1、2位导线引出分别标识为必要的判断条件=0?、<0?、N/A。

  • 对比值分成8位后,我们先要思考一下:其为0时,每一位都为0;其为负数时,最高位总是1。这种判断最直观简洁,那么我们将0-6位用三个三路OR门相接,第7位能直接判断值是否小于0,已找到必要判断<0?。

  • 我们还需要找到值=0?。我整理了表示这两个输出的所有情况,A为0-6位用OR门的输出,B为第7位输出,见下表

  • 我们需要找到一个逻辑门,用来表示A=0且B=0时,输出1,其它情况输出0。查阅真值表NOR门正好符合我们的需求。

3. 处理输出

3.1 现在我们有了6个可表示信息用的输出,我将它们引出的导线分别标识

3.2 输出>0?在前面的思路中,不是必要的判断条件我们不需要(>0?的条件是A=1且B=0,如要实现将增加门数)。

  • 把同名导线接入AND门,这时可确定两个输出分别包含=0、<0条件的结果;

  • 再将其两个输出用OR门相连,得到输出包含了=0、<0、<=0条件的结果;

  • 最后将其输出与条件值第2位(N/A)作为输入,接入在关卡“1位取反器”中用到的XOR门,引出输出我们就得到了最终电路。