Задача

1/5

_St-22-10_kege-02

Теория

1. Базовая программа для решения 
def f(A): # вычисление значения функции по значениям из A
    w,x,y,z=A # порядок переменных и их значения
    r1=x <= (y ==w) # "половина" функции
    r2=y == (w<=z)  # другая "половина" функции
    r=r1 and r2 # значение функции
    return int(r) # можно без int
#основная часть
for n in range(16,32) : #перебор значений от 10000 до 11111
    ss=bin(n)[-4:] # оставляем хвост длиной 4 (0000-1111)
    A=[] #формируем числовой вариант значений
    for s in ss : A.append(int(s)) # можно через генератов списка A=[int(s) for s in ss]
    print(ss,'=',f(A)) # печать аргумента и значения для выбранного порядка

2. Используя данные из условия  можно сократить печать 
def f(A): # вычисление значения функции по значениям из A
    w,x,y,z=A # порядок переменных и их значения
    r1=x <= (y ==w) # "половина" функции
    r2=y == (w<=z)  # другая "половина" функции
    r=r1 and r2 # значение функции
    return int(r) # можно без int
#основная часть
for n in range(16,32) : #перебор значений от 10000 до 11111
    ss=bin(n)[-4:] # оставляем хвост длиной 4 (0000-1111)
    A=[] #формируем числовой вариант значений
    for s in ss : A.append(int(s)) # можно через генератов списка A=[int(s) for s in ss]
   
r=f(A) # значение функции
    if sum(A)==1 or sum(A) in [2,3] and r ==1 :    # отбираем строки по условию 
        print(ss,'=',r)


3. Меняем порядок переменных и находим нужный (решение с изменениями порядка)
Финальный порядок и есть ответ
def f(A): # вычисление значения функции по значениям из A
    #w,x,y,z=A # порядок переменных  1-й прогон
    #w,y,x,z=A # порядок переменных  2-й прогон
    y,x,w,z=A  # порядок переменных  3-й прогон
    r1=x <= (y ==w) # "половина" функции
    r2=y == (w<=z)  # другая "половина" функции
    r=r1 and r2 # значение функции
    return int(r) # можно без int
#основная часть
for n in range(16,32) : #перебор значений от 10000 до 11111
    ss=bin(n)[-4:] # оставляем хвост длиной 4 (0000-1111)
    A=[] #формируем числовой вариант значений
    for s in ss : A.append(int(s)) # можно через генератов списка A=[int(s) for s in ss]
   
r=f(A) # значение функции
    if sum(A)==1 or sum(A) in [2,3] and r ==1 :    # отбираем строки по условию 
        print(ss,'=',r)


 

Задача

Логическая функция F задаётся выражением:
              (x → (y ≡ w)) ∧ (y ≡ (w → z))              
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки
таблицы истинности функции F.
Определите, какому столбцу таблицы истинности соответствует каждая из переменных w, x, y, z.
Переменная 1 Переменная 2 Переменная 3 Переменная 4 Функция
??? ??? ??? ??? F
1   0 1 1
0 0   0 1
0 0 0 1 0

В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы
(сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.).
Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Переменная 1 Переменная 2 Функция
??? ??? F
0 1 0

Тогда первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе нужно написать: yx.

Выберите правильный ответ, либо введите его в поле ввода

Комментарий учителя