Загрузка данных
#1
# print("A ¬A")
# for a in [0, 1]:
# print(a, int(not a))
#
# print("\nA B A∧B")
# for a in [0, 1]:
# for b in [0, 1]:
# print(a, b, int(a and b))
#
# print("\nA B A∨B")
# for a in [0, 1]:
# for b in [0, 1]:
# print(a, b, int(a or b))
#
# print("\nA B A⊕B")
# for a in [0, 1]:
# for b in [0, 1]:
# print(a, b, int(a != b))
#2
# def f(a, b):
# return (not a) or b
#
# count = 0
# print("A B F")
# for a in [0, 1]:
# for b in [0, 1]:
# res = int(f(a, b))
# print(a, b, res)
# if res == 1:
# count = count + 1
#
# print("Количество наборов, при которых F = 1:", count)
#3
# def f(a, b, c):
# return (a and not b) or c
#
# print("A B C F")
# for a in [0, 1]:
# for b in [0, 1]:
# for c in [0, 1]:
# print(a, b, c, int(f(a, b, c)))
# print('-----')
# print("Наборы, при которых F = 1:")
# for a in [0, 1]:
# for b in [0, 1]:
# for c in [0, 1]:
# if f(a, b, c):
# print(a, b, c)
#4
# eq_and = True
# eq_or = True
#
# print("A B A∧B B∧A A∨B B∨A")
# for a in [0, 1]:
# for b in [0, 1]:
# left_and = a and b
# right_and = b and a
# left_or = a or b
# right_or = b or a
# print(a, b, '',int(left_and), ' ', int(right_and), ' ', int(left_or), ' ', int(right_or))
# if left_and != right_and:
# eq_and = False
# if left_or != right_or:
# eq_or = False
#
# print("Закон коммутативности для И выполняется:", eq_and)
# print("Закон коммутативности для ИЛИ выполняется:", eq_or)
#5
# equivalent = True
# print("A B C (A∨B)∨C A∨(B∨C)")
# for a in [0, 1]:
# for b in [0, 1]:
# for c in [0, 1]:
# left = (a or b) or c
# right = a or (b or c)
# print(a, b, c, ' ', int(left),' ', int(right))
# if left != right:
# equivalent = False
#
# print("Закон ассоциативности выполняется:", equivalent)
#6
# equivalent = True
# print("A B F1 F2")
# for a in [0, 1]:
# for b in [0, 1]:
# f1 = not (a and b)
# f2 = (not a) or (not b)
# print(a, b, int(f1), int(f2))
# if f1 != f2:
# equivalent = False
#
# print("Эквивалентны:", equivalent)
#7
# def logical_function(row):
# res = 1
# for val in row:
# res = res and val
# return res
#
# n = int(input("Введите количество переменных n: "))
# for i in range(2 ** n):
# row = []
# temp = i
# for j in range(n):
# row.insert(0, temp % 2)
# temp = temp // 2
# print(*row, int(logical_function(row)))
#8
# def f1(a, b, c):
# return (a and b) or c
#
# def f2(a, b, c):
# return a and (b or c)
#
# equivalent = True
# print("A B C F1 F2")
# for a in [0, 1]:
# for b in [0, 1]:
# for c in [0, 1]:
# v1 = int(f1(a, b, c))
# v2 = int(f2(a, b, c))
# print(a, b, c, v1, '',v2)
# if v1 != v2:
# equivalent = False
#
# print("Эквивалентны:", equivalent)
# if not equivalent:
# print("Наборы, на которых результаты различаются:")
# for a in [0, 1]:
# for b in [0, 1]:
# for c in [0, 1]:
# if int(f1(a, b, c)) != int(f2(a, b, c)):
# print(a, b, c)
#9
# comm_and = True
# comm_or = True
# assoc_and = True
# assoc_or = True
# dist_and = True
# dist_or = True
# idemp_and = True
# idemp_or = True
# double_neg = True
# demorgan_1 = True
# demorgan_2 = True
#
# for a in [0, 1]:
# if (a and a) != a:
# idemp_and = False
# if (a or a) != a:
# idemp_or = False
# if int(not (not a)) != a:
# double_neg = False
# for b in [0, 1]:
# if (a and b) != (b and a):
# comm_and = False
# if (a or b) != (b or a):
# comm_or = False
# if (not (a and b)) != ((not a) or (not b)):
# demorgan_1 = False
# if (not (a or b)) != ((not a) and (not b)):
# demorgan_2 = False
# for c in [0, 1]:
# if ((a and b) and c) != (a and (b and c)):
# assoc_and = False
# if ((a or b) or c) != (a or (b or c)):
# assoc_or = False
# if (a and (b or c)) != ((a and b) or (a and c)):
# dist_and = False
# if (a or (b and c)) != ((a or b) and (a or c)):
# dist_or = False
#
# print("Коммутативность И:", comm_and)
# print("Коммутативность ИЛИ:", comm_or)
# print("Ассоциативность И:", assoc_and)
# print("Ассоциативность ИЛИ:", assoc_or)
# print("Дистрибутивность И:", dist_and)
# print("Дистрибутивность ИЛИ:", dist_or)
# print("Идемпотентность И:", idemp_and)
# print("Идемпотентность ИЛИ:", idemp_or)
# print("Двойное отрицание:", double_neg)
# print("Первый закон де Моргана:", demorgan_1)
# print("Второй закон де Моргана:", demorgan_2)
#10
# n = 2
# f_table = [0, 1, 1, 0]
#
# rows = []
# for i in range(2 ** n):
# row = []
# temp = i
# for j in range(n):
# row.insert(0, temp % 2)
# temp = temp // 2
# rows.append(row)
#
# terms = []
# for i in range(2 ** n):
# if f_table[i] == 1:
# parts = []
# for j in range(n):
# if rows[i][j] == 1:
# parts.append("X" + str(j + 1))
# else:
# parts.append("¬X" + str(j + 1))
# terms.append("(" + " ∧ ".join(parts) + ")")
#
# formula = " ∨ ".join(terms)
# print("Итоговая логическая формула:", formula)
#
# equivalent = True
# print("X1 X2 F_исх F_форм")
# for i in range(2 ** n):
# f_new = 0
# for k in range(2 ** n):
# if f_table[k] == 1:
# match = True
# for j in range(n):
# if rows[i][j] != rows[k][j]:
# match = False
# if match:
# f_new = 1
# print('',*rows[i], '',f_table[i],' ', f_new)
# if f_table[i] != f_new:
# equivalent = False
#
# print("Формула соответствует исходной таблице:", equivalent)