|
Тема |
Re: Mi hvarlete vtoro oko i tuka [re: nobody_] |
|
Автор |
Formal (невежа) |
|
Публикувано | 27.08.01 13:00 |
|
|
Прочетох някъде въпрос за предишната задача...
За предишната задача:
Както видяхме, отговорът на "bal = да?" е bal.
Обаче, ако туземецът ни лъже, ще каже друго. Ето всички възможности:
x | y | f
bal означава | лъже ни | отговаря на "bal = да?" с
--------------|---------|-----------
не | не | не (= bal)
не | да | да (= de)
да | не | да (= bal)
да | да | не (= de)
Отговорът f зависи от (е функция на) x и y, която се нарича по много различни начини, един от тях е "изключващо или", т.е. точно едно от двете x или y е истина. Означава се по различни начини, като в програмирането като че ли най-разпространено е: f = x ^ y; (или x xor y)
По-общо - на всеки въпрос туземецът ще отговаря според тази функция:
x | y | f
истински отговор | лъже ни | отговаря ни с
------------------|---------|-----------
не | не | не
не | да | да
да | не | да
да | да | не
(тук не знаем какво означава bal)
т.е. на въпрос с отговор x, туземецът ще ни отговори с f = x ^ y.
Сега едно свойство на функцията: (z ^ y) ^ y = z (може да се провери по таблицата).
Значи ако изберем такъв въпрос, на който отговора е (z ^ y), ще получим отговор z, независимо дали туземеца казва истината или не. Избираме въпроса:
"Ти лъжеш" (с отговор y)
"z = да" (с отговор z - използваме правилото от началото)
Свързваме двете твърдения с изключващо или и получаваме:
"Вярно ли е точно едно от двете твърдения:
1. Bal означава да
2. Ти лъжеш
?"
Както се вижда заместихме z с bal. Отговора на този въпрос е (bal ^ y). Туземецът ще отговори с (bal ^ y) ^ y = bal! Точно каквото искахме да каже! Phew... отървахме кожата
Съжалявам, ако съм те подценил с толкова подробно обяснение - все пак не знам колко знаеш ти, а половинчато обяснение може и да не ти свърши работа.
Поздрави!Редактирано от Formal на 27.08.01 16:12.
|
| |
|
|
|