Задания
Версия для печати и копирования в MS Word
Тип 2 № 55798
i

Ло­ги­че­ская функ­ция F задаётся вы­ра­же­ни­ем:

(x∧¬y)∨(yz)∨¬w.

На ри­сун­ке при­ведён фраг­мент таб­ли­цы ис­тин­но­сти функ­ции F, со­дер­жа­щий не­по­вто­ря­ю­щи­е­ся на­бо­ры ар­гу­мен­тов.

 

 ?  ?  ?  ? F
000
01010
100

 

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

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

Спрятать решение

Ре­ше­ние.

Со­ста­вим таб­ли­цу ис­тин­но­сти для вы­ра­же­ния (x∧¬y)∨(yz)∨¬w. вруч­ную или при по­мо­щи языка Python:

print("x y z w")

for x in range(0, 2):

for y in range(0, 2):

for z in range(0, 2):

for w in range(0, 2):

if ((x and not (y)) or (y == z ) or not (w)) == False:

print(x, y, z, w)

Далее вы­пи­шем по­лу­чен­ные на­бо­ры пе­ре­мен­ных. В на­бо­рах пе­ре­мен­ные за­пи­шем в по­ряд­ке х, y, z, w. По­лу­чим сле­ду­ю­щие на­бо­ры:

(0, 0, 1, 1),

(0, 1, 0, 1),

(1, 1, 0, 1).

Со­по­ста­вим эти на­бо­ры с при­ве­ден­ным в за­да­нии фраг­мен­том таб­ли­цы ис­тин­но­сти.

Рас­смот­рим тре­тью стро­ку таб­ли­цы ис­тин­но­сти. Она может со­от­вет­ство­вать толь­ко на­бо­ру (1, 1, 0, 1). По­скол­кьу в этом на­бо­ре z равен нулю, то тре­тий стол­бец  — это z.

Рас­смот­рим вто­рой стол­бец таб­ли­цы. Все зна­че­ния в нем 1. Сле­до­ва­тель­но, это стол­бец w.

Пер­вый стол­бец со­от­вет­ству­ет x, а чет­вер­тый стол­бец  — y.

 

Ответ: xwzy.

 

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са (ана­ли­ти­че­ское).

Про­ана­ли­зи­ру­ем вы­ра­же­ние и таб­ли­цу. Видим три под­вы­ра­же­ния пе­ре­чис­лен­ные через знак дизъ­юнк­ции. Все вы­ра­же­ние для трех раз­лич­ных на­бо­ров имеет лож­ные зна­че­ния.

Со­ста­вим таб­ли­цы ис­тин­но­сти для всех под­вы­ра­же­ний, когда они ложны.

xyx∧¬y
000
010
110

yzyz
010
100

¬ww
10

Из по­лу­чен­ных таб­лиц ис­тин­но­сти вы­ве­дем все воз­мож­ные на­бо­ры x, y, z, w для всего вы­ра­же­ния.

 

xyzwF
00110
01010
11010

 

Со­по­ста­вим по­лу­чен­ный фраг­мент с фраг­мен­том из за­да­ния:

 

????F
000
01010
100

 

За­ме­тим, что w может быть толь­ко вто­рым столб­цом (все еди­ни­цы), y  — по­след­ний стол­бец (один ноль), z  — тре­тий стол­бец, так как про­ти­во­по­ло­жен по зна­че­нию столб­цу y (1 и 4 стол­бец  — про­ти­во­ре­чие в пер­вой стро­ке  — оди­на­ко­вые зна­че­ния). Сле­до­ва­тель­но, х  — пер­вый стол­бец.

 

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са на языке Python.

Дан­ное ре­ше­ние по­стро­е­но на пе­ре­бо­ре всех воз­мож­ных про­пус­ков во фраг­мен­те из за­да­ния и всех воз­мож­ных пе­ре­ста­но­вок имен столб­цов.

def f(x, y, z, w):

for x in range(0, 2):

return (x and not y) or (y == z) or not w

from itertools import *

 

# пе­ре­бор всех про­бе­лов

for a1, a2, a3, a4 in product([0, 1], repeat=4):

# все на­бо­ры

t = [(0,a1,a2,0),(0,1,0,1),(a3,1,0,a4)]

# про­вер­ка раз­лич­но­сти всех на­бо­ров

if len(set(t)) != len(t):

continue

# пе­ре­бор всех пе­ре­ста­но­вок имен столб­цов

for p in permutations('xyzw'):

# про­вер­ка на сов­па­де­ние ре­зуль­та­та

if [f(**dict(zip(p,r))) for r in t]==[0,0,0]:

print(*p, sep='')

Источник: ЕГЭ по ин­фор­ма­ти­ке 06.04.2023. До­сроч­ная волна