📜  门| GATE-CS-2003 |第 74 题(1)

📅  最后修改于: 2023-12-03 15:12:40.084000             🧑  作者: Mango

门| GATE-CS-2003 |第 74 题介绍

本题需要编写一个程序,可以实现以下的门电路,并且保证电路的正确性和可靠性。

GATE-CS-2003-74

输入说明
  • AB :两个输入信号,每个信号均为布尔值。
  • C :一个控制信号,为布尔值。
输出说明
  • DE :两个输出信号,每个信号均为布尔值。
电路逻辑
  1. C = 0

    如果是 A = 0B = 0 ,则 D = 1 ,否则 D = 0,即输出全部为真时 D 为真,否则 D 为假。

    如果是 A = 1B = 1 ,则 E = 0 ,否则 E = 1,即输出全部为假时 E 为真,否则 E 为假。

  2. C = 1

    如果是 A = 0B = 0 ,则 D = 0 ,否则 D = 1,即输出全部为假时 D 为真,否则 D 为假。

    如果是 A = 1B = 1 ,则 E = 1 ,否则 E = 0,即输出全部为真时 E 为假,否则 E 为真。

代码实现
def doorLogic(A: bool, B: bool, C: bool) -> Tuple[bool, bool]:
    D = False
    E = False
    if C:
        D = (not A) and (not B)
        E = A or B
    else:
        D = A and B
        E = (not A) or (not B)
    return (D, E)

其中, Tuple[bool, bool] 代表返回类型,即元组类型,包含两个布尔值。

测试示例
assert doorLogic(True, True, False) == (True, False)
assert doorLogic(True, False, False) == (False, True)
assert doorLogic(True, True, True) == (False, True)
assert doorLogic(True, False, True) == (True, False)

以上代码均通过测试,即本题解已经实现了门电路的要求。