Skip to content

Commit 6b15d81

Browse files
author
Alexei Bezborodov
committed
Nand game
1 parent b670279 commit 6b15d81

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

nandgame.py

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
def NAND(a, b):
2+
if a:
3+
if b:
4+
return 0
5+
return 1
6+
7+
print('NAND(1,1)=', NAND(1, 1))
8+
9+
def INV(a):
10+
return NAND(a, a)
11+
12+
print('INV(1)=', INV(1))
13+
14+
def AND(a,b):
15+
return INV(NAND(a, b))
16+
17+
def OR(a, b):
18+
return NAND(INV(a), INV(b))
19+
20+
def XOR(a, b):
21+
return AND(OR(a, b), NAND(a, b))
22+
23+
def HALF_ADD(a, b):
24+
return AND(a, b), XOR(a, b)
25+
26+
h,l = HALF_ADD(1,1)
27+
print('HALF_ADD(1,1)=', h, l)
28+
29+
def FULL_ADD(a, b, c):
30+
h,l = HALF_ADD(a, b)
31+
h1,l1 = HALF_ADD(l, c)
32+
return OR(h1, h), l1
33+
34+
h,l = FULL_ADD(1,1,1)
35+
print('FULL_ADD(1,1)=', h, l)
36+
37+
def MULTI_BIT_ADD(a, b, c):
38+
h = 0
39+
result = [0]*len(a)
40+
for i in range(len(a)):
41+
h, l = FULL_ADD(a[i], b[i], c)
42+
result[i] = l
43+
c = h
44+
return h, result
45+
46+
h,r = MULTI_BIT_ADD([1, 0],[1, 1],1)
47+
print('MULTI_BIT_ADD([1, 0],[1, 1],1)=', h, r)

0 commit comments

Comments
 (0)