概要
blueqatで量子ゲートやってみた。
全加算器作ってみた。
全加算器
carry | a | b | carry | c |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
サンプルコード
c0 = Circuit(8).h[1 : 3].cx[1, 3].cx[2, 3].ccx[1, 2, 4].ccx[0, 3, 5].ccx[5, 4, 6].cx[5, 6].cx[4, 6].cx[0, 7].cx[3, 7].m[:].run(shots = 100)
for cnt in c0:
print("{} + {} = {}".format(int(cnt[1], 2), int(cnt[2], 2), int(cnt[6 : 8], 2)))
c0 = Circuit(8).x[0].h[1 : 3].cx[1, 3].cx[2, 3].ccx[1, 2, 4].ccx[0, 3, 5].ccx[5, 4, 6].cx[5, 6].cx[4, 6].cx[0, 7].cx[3, 7].m[:].run(shots = 100)
for cnt in c0:
print("{} + {} = {}".format(int(cnt[1], 2), int(cnt[2], 2), int(cnt[6 : 8], 2)))
結果
1 + 1 = 2
0 + 1 = 1
0 + 0 = 0
1 + 0 = 1
0 + 1 = 2
0 + 0 = 1
1 + 1 = 3
1 + 0 = 2
以上。