📅  最后修改于: 2023-12-03 14:58:32.617000             🧑  作者: Mango
GATE-IT-2004是印度进行筛选技术岗位求职者的全国性考试。它涵盖了计算机科学、信息技术以及其他一些工科领域。
本文聚焦于2004年的GATE IT考试中的第37章题目,该题目是关于计算机科学中的“门”(GATE)的应用。
这个任务要求你编写一个程序,能够模拟“门”(即逻辑电路)。
实现一个可以组合连通参数,Gate A和Gate B共用1值,共享1 | 作为Input,将输出设置为C和D的电路。
具体地说,模拟以下逻辑电路:
+-------+
| |
+>1--+--| AND |---->
| +-------+ |
+----|---------------+
| |
+>1--+--| OR |------> C
| +-------+ |
+----|---------------+
| |
+>1--+--| XOR |---->
| +-------+ |
+----|---------------+
|
+----+---------------+
| | +-------+ |
+>1--+--| NOT |----> D
| +-------+ |
+-----|--------------+
|
+---------------+
其中:
所有门都有两个输入和一个输出,并且可以看作是这样的简单函数:
| 门类型 | 函数 | |---------|--------| | AND | A ∧ B | | OR | A ∨ B | | XOR | A ⊕ B | | NOT | ¬A |
其中 ∧, ∨, ⊕ 是布尔运算的符号。所有输入 A, B 和输出的值 C, D 均为 0 或 1。 AND, OR 和 XOR 门的行为符合它们的名称:AND 仅在两个输入都为 1 时输出为 1,OR 在任一输入为 1 时输出为 1,XOR 仅在两个输入不同时输出为 1。NOT 门则总是反转输入。
我们将逻辑电路的输入表示为文字 I,输出表示为文字 O。在此问题中,存在以下约束:
给定参数并绘画电路。
考虑以下输入:
1 1
一个有效的解决方案是:
+-------+ +-------+ +--------+ +--------+
| | | | | | | |
+>1----|---| AND |---|----| OR |----| C |
| A | |共享1| | 共享1 | | |
+>1----|---| AND | |共享1小| | |
| B | |1值 | +---| XOR |--|----> D |
+-------+ +-------+ | +--------+ | NOT |
| | 共享1 |
+--------------+ 小 |
+--------+
输出为 C=1, D=0
。
实现一个程序,读取来自标准输入的输入和输出值,以及将要测试的电路。输出表明是否可以将输入转换为给定的输出,忽略输出的顺序。
请注意,您可以为测试用例编写任意数量的程序。我们将运行多个测试程序以评估它们的准确性和性能。
# generate truth tables for logic gates
# NOT Gate
def not_gate(a):
return int(not a)
# OR Gate
def or_gate(a, b):
return int(a or b)
# AND Gate
def and_gate(a, b):
return int(a and b)
# XOR Gate
def xor_gate(a, b):
return int(a ^ b)
# define a gate
def gate(out, *inp):
pass # to be implemented by the student
# run tests on the design
def test_gate():
pass # to be implemented by the student