Загрузка данных


#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)