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

Ло­ги­че­ская функ­ция F задаётся вы­ра­же­ни­ем: (z≡¬x)→((w→¬y)∧(yx)). Дан ча­стич­но за­пол­нен­ный фраг­мент, со­дер­жа­щий не­по­вто­ря­ю­щи­е­ся стро­ки таб­ли­цы ис­тин­но­сти функ­ции F.

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

Пе­ре­мен­ная 1Пе­ре­мен­ная 2Пе­ре­мен­ная 3Пе­ре­мен­ная 4Функ­ция

????????????F
11101
000
00

 

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

 

При­мер. Пусть за­да­но вы­ра­же­ние xy, за­ви­ся­щее от двух пе­ре­мен­ных x и y, и фраг­мент таб­ли­цы ис­тин­но­сти:

 

Пе­ре­мен­ная 1Пе­ре­мен­ная 2Функ­ция
??????F
010

 

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

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

Ре­ше­ние.

Со­ста­вим таб­ли­цу ис­тин­но­сти для вы­ра­же­ния (z≡¬x)→((w→¬y)∧(yx)) вруч­ную или при по­мо­щи языка 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 not(z == (not x))<= ((w <= (not y)) and (y <= x)):

print(x, y, z, w)

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

(0, 1, 1, 0),

(0, 1, 1, 1),

(1, 1, 0, 1).

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

Рас­смот­рим вто­рую и тре­тью стро­ки таб­ли­цы ис­тин­но­сти. За­ме­тим, что вто­рая стро­ка таб­ли­цы может со­от­вет­ство­вать толь­ко пер­во­му на­бо­ру. В тре­тьей стро­ке все не­за­пол­нен­ные ячей­ки со­дер­жат 1. По­сколь­ку вто­рая стро­ка со­от­вет­ству­ет пер­во­му на­бо­ру, то пер­вые две пе­ре­мен­ные могут быть или z, или y. По­сколь­ку пе­ре­мен­ная y может при­ни­мать толь­ко зна­че­ние 1, а в тре­тьей стро­ке таб­ли­це у вто­рой пе­ре­мен­ной стоит 0, то пе­ре­мен­ная y со­от­вет­ству­ет пер­во­му столб­цу, а пе­ре­мен­ная z  — вто­ро­му столб­цу.

Со­ста­вим таб­ли­цу ис­тин­но­сти для вы­ра­же­ния (z≡¬x)→((w→¬y)∧(yx)) вруч­ную или при по­мо­щи языка 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 (z == (not x))<= ((w <= (not y)) and (y <= x)):

print(x, y, z, w)

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

(1, 0, 1, 1),

(1, 1, 1, 0).

За­ме­тим, что в пе­ре­мен­ная y может при­ни­мать зна­че­ния толь­ко 1, тогда пер­вой стро­ке таб­ли­цы со­от­вет­ству­ет вто­рой набор.

По­сколь­ку пе­ре­мен­ная x при­ни­ма­ет зна­че­ние 1, то ей со­от­вет­ству­ет тре­тий стол­бец таб­ли­цы ис­тин­но­сти, тогда чет­вер­тый стол­бец со­от­вет­ству­ет пе­ре­мен­ной w.

 

Ответ: yzxw.

 

При­ведём ре­ше­ние Ивана Ва­ле­рье­ви­ча Ящен­ко на языке Python.

from itertools import *

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

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

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

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

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

for p in permutations('xywz'):

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

print(p)


Аналоги к заданию № 51971: 52173 Все