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
|
p = [[0] * 8 for _ in range(3)]
for i in range(8):
for j in range(3):
p[2 - j][i] = (i >> j) & 1
A, B, C = p
def S(A):
return " & ".join(map(str, A))
def Not(A):
return list(map(lambda x: x ^ 1, A))
def And(A, B):
return list(map(lambda x: x[0] & x[1], zip(A, B)))
def Or(A, B):
return list(map(lambda x: x[0] | x[1], zip(A, B)))
def Xor(A, B):
return list(map(lambda x: x[0] ^ x[1], zip(A, B)))
s = f"""
$$
\\begin{{array}}{{|c|cccccccc|}}
\\hline
& {S(range(8))} \\\\
\\hline
A & {S(A)} \\\\
B & {S(B)} \\\\
C & {S(C)} \\\\
\\hline
\\bar{{A}} & {S(Not(A))} \\\\
\\bar{{B}} & {S(Not(B))} \\\\
\\bar{{C}} & {S(Not(C))} \\\\
\\hline
AB & {S(And(A, B))} \\\\
AC & {S(And(A, C))} \\\\
BC & {S(And(B, C))} \\\\
\\hline
A + B & {S(Or(A, B))} \\\\
A + C & {S(Or(A, C))} \\\\
B + C & {S(Or(B, C))} \\\\
\\hline
A\\oplus B & {S(Xor(A, B))} \\\\
A\\oplus C & {S(Xor(A, C))} \\\\
B\\oplus C & {S(Xor(B, C))} \\\\
\\hline
A(B+C) & {S(And(A, Or(B, C)))} \\\\
AB+AC & {S(Or(And(A, B), And(A, C)))} \\\\
\\hline
A(B\\oplus C) & {S(And(A, Xor(B, C)))} \\\\
(AB)\\oplus(AC) & {S(Xor(And(A, B), And(A, C)))} \\\\
\\hline
A+(BC) & {S(Or(A, And(B, C)))} \\\\
(A+B)(A+C) & {S(And(Or(A, B), Or(A, C)))} \\\\
\\hline
A+(B\\oplus C) & {S(Or(A, Xor(B, C)))} \\\\
(A+B)\\oplus(A+C) & {S(Xor(Or(A, B), Or(A, C)))} \\\\
\\hline
A\\oplus(BC) & {S(Xor(A, And(B, C)))} \\\\
(A\\oplus B)(A\\oplus C) & {S(And(Xor(A, B), Xor(A, C)))} \\\\
\\hline
A\\oplus(B+C) & {S(Xor(A, Or(B, C)))} \\\\
(A\\oplus B)+(A\\oplus C) & {S(Or(Xor(A, B), Xor(B, C)))} \\\\
\\hline
\\end{{array}}
$$
"""
print(s)
|