Как в ЕГЭ · 8 из 20
№2. Чей это столбец
По мотивам задания №2. Логическую функцию записали формулой, а от её таблицы истинности осталось несколько строк, и в них — пустые клетки. Столбцы подписаны «Переменная 1», «Переменная 2»… и никто не помнит, какой из них x, какой y. На экзамене это разгадывают на бумаге; программа перебирает все расстановки и проверяет каждую.
Что сделать
Найдите, какая переменная стоит в каком столбце фрагмента, если строки фрагмента — разные строки таблицы истинности f.
Что приходит
f— функция: принимает нули и единицы в порядке x, y, z, w (у трёх переменных — x, y, z) и возвращает истину или ложьstroki— фрагмент таблицы: кортежи, где сначала значения столбцов (0, 1 илиNone— пустая клетка), последним — значение функции
Что вернуть
Строку из имён переменных по столбцам слева направо, например 'zwxy'.
Допишите функцию poryadok в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
У четырёх переменных 24 расстановки. Для каждой пустые клетки заполняются нулями и единицами так, чтобы функция дала значение из последнего столбца, а строки фрагмента не совпали. Подходит одна расстановка — 'zwxy': первый столбец — z, второй — w, третий — x, четвёртый — y.
Переменных три или четыре — по числу столбцов до значения функции; имена — xyzw по порядку, сколько нужно. Расстановка — какая переменная в каком столбце, каждая ровно в одном. Расстановка подходит, если пустые клетки можно заполнить нулями и единицами так, что в каждой строке функция даёт записанное значение и все строки фрагмента после заполнения разные. Подходящая расстановка всегда ровно одна.
Образцовый тест целиком
f = lambda x, y, z, w: ((x and not y) or (y == z)) and not w stroki = [(0, None, 1, 0, 1), (1, 0, None, 1, 1), (1, 1, 1, None, 0), (0, 0, 1, 1, 0)]
poryadok(f, stroki)
'zwxy'
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.