Skip to content

Commit 8763047

Browse files
feat: menambahkan implementasi logic gate
1 parent ce827e3 commit 8763047

File tree

1 file changed

+200
-0
lines changed

1 file changed

+200
-0
lines changed

other/logic_gate.py

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
# Program sedergana untuk membuat gerbang logika
2+
# https://en.wikipedia.org/wiki/Logic_gate
3+
4+
5+
def NOT_gate(input_1 : int) -> int | str:
6+
"""
7+
NOT gate adalah gerbang logika yang menghasilkan 0
8+
jika input satu dan begitu juga sebaliknya.
9+
10+
>>> NOT_gate(1)
11+
0
12+
>>> NOT_gate(0)
13+
1
14+
15+
"""
16+
error = "angka hanya satu dan nol"
17+
if input_1 == 1 :
18+
return 0
19+
elif input_1 == 0 :
20+
return 1
21+
else :
22+
return error
23+
24+
25+
def OR_gate(int_1 : int , int_2 : int) -> int | str:
26+
"""
27+
OR gate adalah gerbang yang menghasilkan 0 jika dua
28+
input 0.
29+
30+
>>> OR_gate(0,0)
31+
0
32+
>>> OR_gate(0,1)
33+
1
34+
>>> OR_gate(1,0)
35+
1
36+
>>> OR_gate(1,1)
37+
1
38+
>>> OR_gate(3,0)
39+
'angka hanya satu dan nol'
40+
41+
"""
42+
error = "angka hanya satu dan nol"
43+
if int_1 == 0 and int_2 == 0:
44+
return 0
45+
elif int_1 == 1 and int_2 == 0:
46+
return 1
47+
elif int_1 == 0 and int_2 == 1:
48+
return 1
49+
elif int_1 == 1 and int_2 == 1:
50+
return 1
51+
else:
52+
return error
53+
54+
55+
def AND_gate(int_1 : int , int_2 : int) -> int | str:
56+
"""
57+
AND gate adalah gerbang yang menghasilkan 1 jika dua
58+
input 1.
59+
60+
>>> AND_gate(0,0)
61+
0
62+
>>> AND_gate(0,1)
63+
0
64+
>>> AND_gate(1,0)
65+
0
66+
>>> AND_gate(1,1)
67+
1
68+
>>> NAND_gate(3,0)
69+
'angka hanya satu dan nol'
70+
71+
"""
72+
error = "angka hanya satu dan nol"
73+
if int_1 == 0 and int_2 == 0:
74+
return 0
75+
elif int_1 == 1 and int_2 == 0:
76+
return 0
77+
elif int_1 == 0 and int_2 == 1:
78+
return 0
79+
elif int_1 == 1 and int_2 == 1:
80+
return 1
81+
else:
82+
return error
83+
84+
85+
def NAND_gate(int_1 : int , int_2 : int) -> int | str:
86+
"""
87+
NAND gate adalah gerbang yang menghasilkan 0 jika dua
88+
input 1.
89+
90+
>>> NAND_gate(0,0)
91+
1
92+
>>> NAND_gate(0,1)
93+
1
94+
>>> NAND_gate(1,0)
95+
1
96+
>>> NAND_gate(1,1)
97+
0
98+
>>> NAND_gate(3,0)
99+
'angka hanya satu dan nol'
100+
101+
"""
102+
error = "angka hanya satu dan nol"
103+
if int_1 == 0 and int_2 == 0:
104+
return 1
105+
elif int_1 == 1 and int_2 == 0:
106+
return 1
107+
elif int_1 == 0 and int_2 == 1:
108+
return 1
109+
elif int_1 == 1 and int_2 == 1:
110+
return 0
111+
else:
112+
return error
113+
114+
115+
def NOR_GATE(int_1 : int , int_2 : int) -> int | str:
116+
"""
117+
NOR gate adalah gerbang yang menghasilkan 1 jika dua
118+
input 0.
119+
120+
>>> NAND_gate(0,0)
121+
1
122+
>>> NAND_gate(0,1)
123+
1
124+
>>> NAND_gate(1,0)
125+
1
126+
>>> NAND_gate(1,1)
127+
0
128+
>>> NAND_gate(3,0)
129+
'angka hanya satu dan nol'
130+
131+
"""
132+
error = "angka hanya satu dan nol"
133+
if int_1 == 0 and int_2 == 0:
134+
return 1
135+
elif int_1 == 1 and int_2 == 0:
136+
return 0
137+
elif int_1 == 0 and int_2 == 1:
138+
return 0
139+
elif int_1 == 1 and int_2 == 1:
140+
return 0
141+
else:
142+
return error
143+
144+
145+
def XOR_gate(int_1 : int , int_2 : int) -> int | str:
146+
"""
147+
XOR gate adalah gerbang yang akan menghasilkan angka 1 jika
148+
input nya berlawanan.
149+
>>> XOR_gate(0,0)
150+
0
151+
>>> XOR_gate(1,0)
152+
1
153+
>>> XOR_gate(0,1)
154+
1
155+
>>> XOR_gate(1,1)
156+
0
157+
"""
158+
error = "angka hanya satu dan nol"
159+
if int_1 == 0 and int_2 == 0:
160+
return 0
161+
elif int_1 == 1 and int_2 == 0:
162+
return 1
163+
elif int_1 == 0 and int_2 == 1:
164+
return 1
165+
elif int_1 == 1 and int_2 == 1:
166+
return 0
167+
else:
168+
return error
169+
170+
171+
def XNOR_gate(int_1 : int, int_2 : int) -> int | str:
172+
"""
173+
XNOR gate adalah gerbang yang yang akan menghasilkan 1 jika
174+
inputnya sama.
175+
>>> XNOR_gate(0,0)
176+
1
177+
>>> XNOR_gate(1,0)
178+
0
179+
>>> XNOR_gate(0,1)
180+
0
181+
>>> XNOR_gate(1,1)
182+
1
183+
"""
184+
error = "angka hanya satu dan nol"
185+
if int_1 == 0 and int_2 == 0:
186+
return 1
187+
elif int_1 == 1 and int_2 == 0:
188+
return 0
189+
elif int_1 == 0 and int_2 == 1:
190+
return 0
191+
elif int_1 == 1 and int_2 == 1:
192+
return 1
193+
else:
194+
return error
195+
196+
197+
if __name__ == "__main__":
198+
import doctest
199+
200+
doctest.testmod()

0 commit comments

Comments
 (0)