Когда склеивате по диаграмме Вейча то
1 1 0 1
1 0 1 1
следует представлять в виде цилиндра, где 1 в углах касаются друг друга, так что заменяются на
not x3
Так что вы бы уже на третьем шаге получили правильный ответ: not x3
V x1 and x2
V not x1 and not x2
Проверка правильности на питоне:
def f(x1, x2, x3):
return not x3 or x1 and x2 or not x1 and not x2
for x1 in [False, True]:
for x2 in [False, True]:
for x3 in [False, True]:
print(f"{int(x1)} {int(x2)} {int(x3)}: {int(f(x1, x2, x3))}")
# Напечатает:
0 0 0: 1
0 0 1: 1
0 1 0: 1
0 1 1: 0
1 0 0: 1
1 0 1: 0
1 1 0: 1
1 1 1: 1