个人记录一下玩图灵完备中通关的思路,由于本人没学过数电和计算机组成原理,通关思路都是野路子,若有大佬指点非常感谢。(文中“0”表示假,“1”表示真)
原力觉醒
本关只需要连接好输入和输出,并点击左上角输入切换1和0。
与非门(NAND)
本关引入与非门的概念,并引导玩家了解“真值表”的概念。
下方真值表在表格中表示为:
非门(NOT)
将NOT与NAND的真值表对比,不难看出,当NAND输入都为0,输出为1;输入都为1,输出为0。故只需将输入化为两端接入NAND即可实现NOT。
与门(AND)
将AND与NAND的真值表对比,很明显当NAND输出1时,AND输出是0;当NAND输出0时,AND输出是1。故实现AND只需要在NAND后面取反即可。
或非门(NOR)
将NOR与AND的真值表对比,很明显,NOR只有在输入都为0时输出1,AND只有在输入都为1时输出1,故实现NOR只需要将AND的输入端取反即可。
游戏这关还没给AND门,在上个关卡的基础上将输入取反即可。
或门(OR)
将OR与NOR的真值表对比,明显当OR输出0时,NOR输出1,当OR输出1时,NOR输出0,故实现或门只需要在NOR后取反即可。
高电平
观察NAND的真值表,可知当输入值不相同时,NAND必定输出1,故将输入值分成两条路线,一条路线取反即可满足永远输出1。
第二刻
观察第二刻的真值表,发现其只有一种情况下输出1,与AND相似,对比AND的真值表,发现AND只有输入值都为1的情况下输出1,若要输入1,0时AND输出1,则将输入2取反,画出真值图,满足需求。
异或门(XOR)
观察异或门的真值表,发现其只有在输入相反信号时输出1,输入相同信号时输出2。我们需要将输入信号分组,使其输入相反信号时为组1,输入相同信号时为组2。联想上一题的第二刻,其将1,0与其他三个输入分开,同理可做第三刻,其将0,1与其他输入分开。我们将输入值分别通过第二刻和第三刻,可以发现当输入值相同时,输出值必为两个0,当输入值相反时,输出值为1,0或0,1,这样就将信号分为两组了。联想到OR特性“任一输入为1时输出1”,可在后方加一个OR满足XOR效果。
三路或门
观察三路或门的真值表,发现其属性与OR类似,仅两路输入都为0时才输出0。
简化三路或门的真值表,并且当且仅当输入1和输入2都输入0,输出才为0,其他都输出1,故先将输入1和输入2输入OR,得:
现在就很明显了,只有第一种情况下输入都为0,其他情况下都至少有一个输入为1,考虑到OR性质“仅输入都为0时输出0”,我们将两个输入再输入一个OR,可得三路或门。
三路与门
思路跟三路或门是一样的,只需要将输入1,输入2先接入AND,再将剩下两个输入接入AND,就可满足三路与门的需求。
同或门(XNOR)
观察同或门的真值表,容易发现其输出值与XOR正好相反,故在XOR后取反即可。