Задание 2. Информатика. ЕГЭ. Шастин. 6.11.2024

Просмотры: 248
Изменено: 24 ноября 2024

(Д. Бахтиев) Святогор заполнял таблицу истинности логической функции $$ F = (x \equiv (y \to z \lor x)) \land w, $$ но успел заполнить лишь фрагмент из трёх различных её строк, не указав, какому столбцу таблицы соответствует каждая из переменных \(x\), \(y\), \(z\), \(w\).

????F
1011
001
101

Определите, какому столбцу таблицы соответствует каждая из переменных \(x\), \(y\), \(z\), \(w\).

В ответе напишите буквы \(x\), \(y\), \(z\), \(w\) в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу, затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не надо.

Решение:

Чтобы обеспечит истинность функции \(F\), переменная \(w\) должна быть равна \(1\) в каждой строке. Значит \(w\) — это третий столбец. Если \(x = 0\), то тогда выражение \(y \to z \lor 0\) должно быть ложным, т.е. \(y = 1, \, z = 0\). Тогда \(x\) не может быть вторым столбцом, так как если это так, то \(y\) — это первый столбец, а в четвёртый мы должны будем дописать нули (в нашем предположении это \(z\)). Но тогда первая и третья строчки совпадут. Значит, \(x\) — это первый столбец. Тогда \(y\) — это второй столбец. Дописываем туда \(1\). В случаях, когда \(x = 1\), переменная \(y=0\) и выражение \(0 \to z \lor 1\) будет истинно вне зависимости от значения \(z\).

Программное решение

Python


from itertools import product, permutations

def F(x, y, z, w):
    return (x == (y <= (z or x))) and w

for p in permutations('xyzw'):
    for a, b, c, d, e in product([0, 1], repeat=5):
        table = [(1, 0, 1, a, 1),
                 (0, b, c, 0, 1),
                 (1, 0, d, e, 1)]
        if len(set(table))< 3:
            continue
        if all(F(**dict(zip(p, row))) == row[-1] for row in table):
            print(*p)

Ответ: \(xywz\)