SAT-Table

Contents

SAT-Table#

Mahmood Amintoosi, Fall 2024

Computer Science Dept, Ferdowsi University of Mashhad

import numpy as np

محاسبه فرمول استرلینگ

\[\begin{split} S(N,m) = m S(N-1,m) + S(N-1,m-1) \\ S(N,k) = k S(N-1,k)+ S(N-1,k-1) \end{split}\]
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

جدول درستی با سه متغیر

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.]

تابع رو چگونه اصلاح کنیم که هر سطر جدول درستی رو برگردونه؟

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.]