📅  最后修改于: 2023-12-03 14:58:37.759000             🧑  作者: Mango
本文将介绍门|门模拟2017年的第10个问题,这是一个模拟电路问题。
在这个问题中,我们需要设计一个模拟电路,满足下列要求:
电路图如下所示:
你需要使用任何你习惯的语言,实现这个电路的逻辑功能,并用样例数据和输出测试你的实现。
你需要提交你的实现代码和测试数据。
一个较为简单明了的实现方式:
def door_door_2017_prob10(clk, inp):
r1 = s1 = r2 = s2 = 1 # 初始化
q1 = q2 = 0 # 初始状态
for i in range(len(clk)):
if clk[i]:
if inp[i]: # 输入为1,置反向触发器
r1, s1 = s1, r1
r2, s2 = s2, r2
q1 = (not s1) if r1 else q1 # 更新Q1,利用反向触发器
q2 = (not s2) if r2 else q2 # 更新Q2,利用反向触发器
return q1, q2
如下为测试样例数据:
def test_door_door_2017_prob10():
clk = [0, 0, 0, 1, 1, 1, 0, 1, 0, 1]
inp = [0, 1, 1, 1, 1, 0, 1, 1, 0, 0]
q1, q2 = door_door_2017_prob10(clk, inp)
assert q1 == 0 and q2 == 1, (q1, q2)
test_door_door_2017_prob10()
这是一个较为简单的模拟电路问题,我们只需要实现逻辑功能,并结合测试数据检验实现是否正确即可。