Задание 2 ЕГЭ: программный метод решения
| в условии | читается | в программе |
|---|---|---|
| ¬A | не A | not A |
| A ∧ B | A и B | A and B |
| A ∨ B | A или B | A or B |
| A → B | из A следует B | A <= B |
| A ≡ B | A равносильно B | A == B |
Порядок действий в условии: сначала ¬, потом ∧, потом ∨,
потом →, последней ≡. Скобок в условии ровно столько, сколько нужно:
в x ≡ y ∨ y сначала ∨, а в
¬(w → x) отрицание относится ко всей скобке.
В Python скобки ставить везде: not x <= y он
читает как not (x <= y), а x <= y == z —
как цепочку сравнений.
Строка таблицы переписывается с листа как есть, вместе с F:
(0, 0, 1, 1, 1) — четыре значения и пятым F. Расстановка
p — строка букв в порядке столбцов, как в задании 1:
'zwxy' значит «в первом столбце z, во втором w…».
for p in permutations('xyzw'):
p = ''.join(p)
ok = True
for row in table:
x = row[p.index('x')]
...
F = выражение
if F != row[4]:
ok = False
if ok:
print(p)
permutations — все 24 расстановки букв по столбцам;p.index('x') — номер столбца, где стоит x (с нуля);row[p.index('x')] — значение x в этой строке;row[4] — F с листа; не сошлось — расстановка не та.Четыре строки с index — по одной на переменную. После них
выражение F пишется прямо, как в условии: никаких def.
Те же четыре строки можно записать одной:
x, y, z, w = [row[p.index(v)] for v in 'xyzw']
Справа список из четырёх значений, по одному на букву, слева он
распаковывается в четыре переменные. Порядок букв в
'xyzw' и имён слева обязан совпадать.
for a1, a2, a3 in product([0, 1], repeat=3):
table = [(a1, 0, 1, a2, 0), (1, 1, a3, 0, 0), (0, 1, 1, 1, 0)]
if len(table) == len(set(table)):
...
Пустые клетки перебираются product. Проверка
len(table) == len(set(table)) выбрасывает варианты с
одинаковыми строками: в условии сказано, что строки различны, и это
не украшение, а ограничение — без него ответ часто перестаёт быть
единственным.
Буквы подряд, без пробелов и запятых — в том порядке, в каком идут
столбцы таблицы: zxwy.
Задачи авторские, составлены в форме задания 2 ЕГЭ по информатике. Форма задания и способ решения — как на экзамене, а условия написаны своими словами. Логическая функция и фрагмент таблицы каждый раз новые.
Задание 2 ЕГЭ: программный метод решения
| в условии | читается | в программе |
|---|---|---|
| ¬A | не A | not A |
| A ∧ B | A и B | A and B |
| A ∨ B | A или B | A or B |
| A → B | из A следует B | A <= B |
| A ≡ B | A равносильно B | A == B |
Порядок действий в условии: сначала ¬, потом ∧, потом ∨,
потом →, последней ≡. Скобок в условии ровно столько, сколько нужно:
в x ≡ y ∨ y сначала ∨, а в
¬(w → x) отрицание относится ко всей скобке.
В Python скобки ставить везде: not x <= y он
читает как not (x <= y), а x <= y == z —
как цепочку сравнений.
Строка таблицы переписывается с листа как есть, вместе с F:
(0, 0, 1, 1, 1) — четыре значения и пятым F. Расстановка
p — строка букв в порядке столбцов, как в задании 1:
'zwxy' значит «в первом столбце z, во втором w…».
for p in permutations('xyzw'):
p = ''.join(p)
ok = True
for row in table:
x = row[p.index('x')]
...
F = выражение
if F != row[4]:
ok = False
if ok:
print(p)
permutations — все 24 расстановки букв по столбцам;p.index('x') — номер столбца, где стоит x (с нуля);row[p.index('x')] — значение x в этой строке;row[4] — F с листа; не сошлось — расстановка не та.Четыре строки с index — по одной на переменную. После них
выражение F пишется прямо, как в условии: никаких def.
Те же четыре строки можно записать одной:
x, y, z, w = [row[p.index(v)] for v in 'xyzw']
Справа список из четырёх значений, по одному на букву, слева он
распаковывается в четыре переменные. Порядок букв в
'xyzw' и имён слева обязан совпадать.
for a1, a2, a3 in product([0, 1], repeat=3):
table = [(a1, 0, 1, a2, 0), (1, 1, a3, 0, 0), (0, 1, 1, 1, 0)]
if len(table) == len(set(table)):
...
Пустые клетки перебираются product. Проверка
len(table) == len(set(table)) выбрасывает варианты с
одинаковыми строками: в условии сказано, что строки различны, и это
не украшение, а ограничение — без него ответ часто перестаёт быть
единственным.
Буквы подряд, без пробелов и запятых — в том порядке, в каком идут
столбцы таблицы: zxwy.
Задачи авторские, составлены в форме задания 2 ЕГЭ по информатике. Форма задания и способ решения — как на экзамене, а условия написаны своими словами. Логическая функция и фрагмент таблицы каждый раз новые.