forked from DedSecInside/Awesome-Scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogic_gate_solver.py
133 lines (120 loc) · 3.48 KB
/
logic_gate_solver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Step by Step Logic Gate Solver. Execute input_equation() to start the program!
def input_equation():
"""
Evaluate input : input input
Args:
"""
print("Enter equation without whitespaces")
equation = input()
var = []
for character in equation:
if(character.isalpha):
if(character not in var):
var.append(character)
answer = fill_variable(var, equation)
print("The answer is:", answer)
def fill_variable(var, equation):
"""
Fill variable with variable.
Args:
var: (array): write your description
equation: (str): write your description
"""
print("The variables are the following")
for v in var:
if(v.isalpha()):
print(v)
equation_n = equation
for v in var:
if(v.isalpha()):
print("Enter the value of:", v)
temp = input()
equation_n = equation_n.replace(v, temp)
return calculate(equation_n)
def calculate(equation):
"""
Calculate the equation.
Args:
equation: (int): write your description
"""
print("Calculating now")
equation = list(equation)
equation = solve_complement(equation)
equation = solve_and(equation)
equation = solve_or(equation)
return equation
def solve_complement(equation):
"""
Solve the linear equation.
Args:
equation: (todo): write your description
"""
unsolve = True
while(unsolve):
if("'" in equation):
ind = equation.index("'")
if(equation [ ind - 1 ] == '1'):
equation [ ind - 1 ] = 0
equation.pop(ind)
else:
equation [ ind - 1] = 1
equation.pop(ind)
else:
print("Solved Complements")
print(equation)
unsolve = False
return equation
def solve_and(equation):
"""
Solve the linear equations.
Args:
equation: (todo): write your description
"""
unsolve = True
while(unsolve):
if("." in equation):
ind = equation.index(".")
if(equation[ind - 1] == '1'):
if(equation[ind + 1] == '1'):
equation[ ind ] = '1'
equation.pop(ind - 1), equation.pop(ind)
else:
equation[ ind ] = '0'
equation.pop(ind - 1), equation.pop(ind)
else:
equation[ ind ] = '0'
equation.pop(ind - 1)
equation.pop(ind)
else:
print("Solved AND")
print(equation)
unsolve = False
return equation
def solve_or(equation):
"""
Solve a linear equation.
Args:
equation: (todo): write your description
"""
unsolve = True
while(unsolve):
if("+" in equation):
ind = equation.index("+")
if(equation[ind - 1] == '0'):
if(equation[ind + 1] == '0'):
equation[ ind ] = '0'
equation.pop(ind - 1), equation.pop(ind)
else:
equation [ ind ] = '1'
equation.pop(ind - 1)
equation.pop(ind)
else:
equation[ ind ] = '1'
equation.pop(ind - 1)
equation.pop(ind)
else:
print("Solved OR")
print(equation)
unsolve = False
return equation
input_equation()