Ты чего-то не понимаешь. Или не умеешь.
from itertools import product
def f(a, b, c):
return int(a and not b and not c or a and c)
print("A B C F")
for abc in product((0, 1), repeat=3):
print(*abc, f(*abc))
Смотрим вывод
A B C F
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 1
в колонке F всего 3 единички, из них в задачу попали 2. Смотрим на строчки с единичками
A B C F
1 0 0 1
1 0 1 1
1 1 1 1
на роль колонки №2 вроде подходят A и C - они дают 2 необходимых единички,
но C отпадает - в соотв. строках нашей таблицы стоят столбики A и B содержат
1 0
1 1
а в задании
1 0
0 0
пробуем подобрать 2 из трех строчек, так что средняя колонка - A, а B и C дадут нужные 3 нуля и единичку
вот же они:
A B C F
1 0 0 1
1 0 1 1
надо только переставить колонки и строки
C A B F
1 1 0 1
0 1 0 1
убедимся, что и первая строчка из задания, та где F == 0, найдется,
для этого перепишем ее в правильном порядке
C A B F -> A B C F
0 1 1 0 -> 1 1 0 0
- есть такая строка, предпоследняя в таблице.
зы. для
тех, которым сложно Akram: я и сам думать не люблю, пусть комп думает )
ABCF = [(a, b, c, f(a, b, c))
for a, b, c in product((0, 1), repeat=3)]
data = ((0, 1, 1, 0),
(1, 1, 0, 1),
(0, 1, 0, 1))
for x, y, z in permutations((0, 1, 2)):
crossdata = [(r[x], r[y], r[z], r[3]) for r in ABCF]
if all(r in crossdata for r in data):
print("ABC"[x], "ABC"[y], "ABC"[z])