SAT-Table

import numpy as npComputing Stirling’s formula
def S(N, k):
if k == 1 or k == N:
return 1
elif k > N:
return 0
else:
return k * S(N - 1, k) + S(N - 1, k - 1)S_3_2 = S(3, 2)
print(S_3_2)
S_15_3 = S(15, 3)
print(S_15_3)
S_150_3 = S(150, 3)
print(S_150_3)3
2375101
61664747505854495487450129694992261011432242869144177577783166025584730
Truth table with three variables
for x1 in range(2):
for x2 in range(2):
for x3 in range(2):
print(x1,x2,x3)0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
def SAT_Table(x, i):
if i == x.shape[0]:
print(x)
else:
for x[i] in range(2):
SAT_Table(x, i + 1)N = 3
x = np.zeros(N)
SAT_Table(x, i=0)[0. 0. 0.]
[0. 0. 1.]
[0. 1. 0.]
[0. 1. 1.]
[1. 0. 0.]
[1. 0. 1.]
[1. 1. 0.]
[1. 1. 1.]
How do we fix the function so that it returns each row of the truth table?
The following code is not correct
def SAT_Table(x, i):
if i == x.shape[0]:
return x
else:
for x[i] in range(2):
return SAT_Table(x, i + 1)N = 3
x = np.zeros(N)
i = 0
print(SAT_Table(x, i))[0. 0. 0.]
Using yield :)¶
def SAT_Table(x, i):
if i == x.shape[0]:
yield x
else:
for x[i] in range(2):
yield from SAT_Table(x, i + 1)N = 3
x = np.zeros(N)
i = 0
for s in SAT_Table(x, i):
print(s)[0. 0. 0.]
[0. 0. 1.]
[0. 1. 0.]
[0. 1. 1.]
[1. 0. 0.]
[1. 0. 1.]
[1. 1. 0.]
[1. 1. 1.]