В чулане программируют Си-кодеры, они всегда говорят правду, и Java-кодеры, они всегда врут. Кто из программистов на чем кодит, неизвестно. Все программисты перемешаны в чулане.
Как, зайдя в чулан и задав всего один вопрос одному программисту из чулана, понять, есть ли у него кактус слева от клавиатуры, если нельзя задавать вопрос, содержащий слова "ЛЖЕЦ, ПРАВДЕЦ, ПРАВДА, ЛОЖЬ"?
31 октября 2009 в 9:01
Я вот придумал ещё более изящный способ. Надо, войдя в чулан, сразу же во всеуслышание заявить: "Джава тормозит". Те, кто с кровожадным видом обернутся в вашу сторону, скорее всего, и есть те самые. Пока они тащат вас на костер, можно поинтересоваться у них насчет кактуса.
31 октября 2009 в 3:03
А я подумал, что это как-то связано со стеком потока в джаве) Может он там как-то не так обрабатывается и поэтому у них не бывает переполнения %)
31 октября 2009 в 2:05
Да, меня чо-то прёт уже:))
31 октября 2009 в 2:04
Он просто ответит "нет" =)
31 октября 2009 в 2:03
Потому что выглядит внушительно:)) Если честно, я его нагуглил. Это один из ответов на загадку о двух стражах и двух дверях.
31 октября 2009 в 2:03
Мой засчитанный ответ звучал так:
"Если бы я спросил тебя, есть ли у тебя кактус справа от клавиатуры, что бы ты мне ответил?"
Но это примерно то же самое)
31 октября 2009 в 2:03
Математически, правилен любой способ заставить лжеца совершить двойную инверсию:)
А вот если спросить программиста на джаве: "Всегда ли ты врёшь?", случится ли у него переполнение?
31 октября 2009 в 2:02
Очень щепетильные к родному языку программисты Правильный длинный вопрос тут уже дан. Пытаться его повторить я смысла не вижу. Пытаться сделать что-то совсем некрасивое – тоже.
Есть короткий красивый литературный вопрос, вот его можно попытаться найти, но xor там совсем "не в кассу")
31 октября 2009 в 2:02
Каноническое решение: можешь ли ты утверждать, что слева от твоей клавиатуры кактус? Но оно ориентировано на определенный алгоритм вранья.
31 октября 2009 в 2:02
Почему это – каноническое?
А так да, это правильное и короткое.
31 октября 2009 в 2:01
Тогда так:
(Есть ли у тебя кактус слева от клавиатуры) xor (ты программист на Джаве)?
С-программер ответит a xor 0 = a
Джава-программер, не умеющий врать рекурсивно, ответит !(a xor 1) = !!a = a, что нас вполне устраивает.
И даже если он врет полностью рекурсивно, он ответит !(!a xor 0) = !!a = a.
А вот если он врет только в операндах, он ответит !a xor 0 = !a, что нас не устраивает совершенно.
31 октября 2009 в 2:01
Ненене, программисту надо все вопросы литературно задавать, в этом подвале сплошные ценители Гоголевского языка и стихов Фета.
31 октября 2009 в 2:01
Да какие ж они программисты, если они xor не могут вычислить.
31 октября 2009 в 2:00
Скажем так: программист выделяет в вопросе отдельные простые высказывания, переводит вопрос в форму логического выражения, после чего вычисляет его истинность. Если спросить у непьющего от рождения программиста, перестал ли он пить коньяк по утрам, то он просто не сможет ничего ответить.
По правде говоря, я никогда до конца не знал ответ на этот вопрос, но в большинстве задач предполагается отрицание лжецом итога, а не частей. Лжецы патологические, врут ради вранья, а не ради запутывания.
31 октября 2009 в 1:05
хорошо, перефразирую: если вопрос представляет собой логическое выражение, лжец инвертирует только результат, только операнды или и то, и другое? Или выражения булевой алгебры вообще нельзя использовать?
31 октября 2009 в 1:04
сдаюсь
31 октября 2009 в 1:03
Любое выражение может быть или правдой, или ложью. Вот лжец это дело "переворачивает" =)
31 октября 2009 в 1:03
еще подумаю
31 октября 2009 в 1:03
хорошо, есть выражение a xor 1;
Лжец представит его как !a xor 0 или как !(!a xor 0), или как !(a xor 1)?
31 октября 2009 в 1:03
как !(a xor 1)
Но при этом спрашивать у программиста что-то сложнее, чем 1? или 0? некрасиво, и они это не любят
Но если а, и 1 – выражения, то и на них он соврет =)
А вообще это зависит от того, как сформулированы скобки и ксор
31 октября 2009 в 1:02
Я зопутолсо (
Но в цикл кодера все равно воейдет
31 октября 2009 в 1:02
Этот вопрос дает понять, лжец или правдивец этот человек, т.к. честный ответ должен быть "нет". А лживый – "да".
А второй вопрос – непосредственно вопрос, на который лживый ответит да, а правдивый ответит "нет" (т.е. ответы совпадут), а если кактус есть, то ответы не совпадут =)
Это логичный способ) Но можно проще и красивше =)
31 октября 2009 в 1:02
вместо этого можно было написать любой другой вопрос, ответ на который всегда будет "нет", и по-моему нету тут никаких зацикливаний
31 октября 2009 в 1:02
А что ответит программист на джаве, если я спрошу у него:
"(Есть ли у тебя кактус слева от клавиатуры) xor (2*2 == 4)?"
В смысле, он инвертирует только исходные посылки, или только результат, или и то, и другое? Как у него вральный модуль устроен?
31 октября 2009 в 1:02
Блин, так не честно, я это же написал чуть раньше >_< Александр просто хитрожопо соединил два вопроса в один…
31 октября 2009 в 1:02
Александр, интересно искать красивое решение или дать ещё задачу? =)
31 октября 2009 в 1:01
Да, это решение. Но есть красивый короткий вопрос. Он короче более чем в два раза
31 октября 2009 в 1:01
Если бы у тебя не было кактуса слева от клавиатуры, как бы ты ответил на вопрос "есть ли у тебя кактус слева от клавиатуры"?
А по моему этот вопрос вводит в цикл мозг врущего кодера )) Допустим, кактуса у него нет, он хочет соврать (кактус есть), он бы ответил "есть", но вторая часть вопроса заставляет его врать по этому поводу и он хочет ответить нету… Но т.к. это есть честный ответ, то цикл начинается с начала.
31 октября 2009 в 1:00
одинаковы ли ответы на вопросы: если бы у тебя не было кактуса слева от клавиатуры, как бы ты ответил на вопрос "есть ли у тебя кактус слева от клавиатуры" и есть ли он у тебя там в действительности?
ответ "нет, не одинаковы" – кактус есть;
ответ "да, одиниковы" – кактуса нет
31 октября 2009 в 0:03
Не факт. Вообще неизвестно, что там у них с кактусами =)
Это вообще чулан, может они там и не держат растительность. А может и держат. А может у программиста дома слева от клавиатуры есть кактус? Надо узнать ))
31 октября 2009 в 0:02
А если разбиение на команды у них иное? По принципу цвета волос, блондины – одна команда, брюнеты – другая?))))
31 октября 2009 в 0:02
В вопросе не должно быть слов "ЛЖЕЦ, ПРАВДЕЦ, ПРАВДА, ЛОЖЬ".
31 октября 2009 в 0:02
Можно, вроде, тока через два вопроса… То есть, первый вопрос индифицирует собеседника (спросить что угодно, на что ответ всегда будет нет), а дальше уже понятно.
31 октября 2009 в 0:02
Можно за один вопрос.
31 октября 2009 в 0:02
Хм, а кактус у каждого кодера только один?
31 октября 2009 в 0:01
это же тривиально: независимо от перестановки логического отрицания я всегда буду получать инвертированный ответ
31 октября 2009 в 0:01
ну если перепутаны все, то надо подумать, думаю решение гдето в крошках и пиве
31 октября 2009 в 0:01
нет, в целом, думал ты в верном направлении, хотя и неправильно, попади ты к двум правдивцам и твой вопрос не сработал бы.
31 октября 2009 в 0:01
Имхо это не решается оО
Потому, что если тебе ответили нет, то это либо нет либо да (т.е. кодер либо Си либо Ява), а если тебе ответили да, то это либо да либо нет…
31 октября 2009 в 0:01
слушай а сами то они друг друга отличают верно? =)
31 октября 2009 в 0:01
Как ты думаешь считают ли программисты из другой команды что у тебя есть кактус?
31 октября 2009 в 0:01
Майк, если они отличают друг друга, тогда решение верное. А если не отличают?
31 октября 2009 в 0:01
А это не важно отличают или нет. Он же не будет спрашивать. А ответ другой команды он знает
31 октября 2009 в 0:00
так неинтересно)
31 октября 2009 в 0:00
Наоборот, вот так как раз задача становится интересной =)
31 октября 2009 в 0:00
Как ты думаешь считает ли вон тот программист с крошками в бороде что у него есть кактус?
31 октября 2009 в 0:00
Ну и вот ты получил ответ "нет", какой ты сделаешь вывод?
31 октября 2009 в 0:00
пойму что кактус гдето рядом, скорее всего слева от клавиатуры.
31 октября 2009 в 0:00
Ну вот если тот программист правдивый, и этот правдивый, то тот бы посчитал, что у него нет кактуса, этот бы передал тебе, что тот бы посчитал, что кактуса нет. А ты решишь, что он есть. Облом.
31 октября 2009 в 0:00
Если да то кактуса у него нет. а они там еще могут быть все перепутаны?
то есть они не сидят отдельными неидентифицированными кучами?
31 октября 2009 в 0:00
Конечно все перепутаны =)
30 октября 2009 в 23:05
Вопрос второй, для тех, кто справится с первым – как при этом не подскользнуться в чулане на бутылке пива и не унюхать крошки от чипсов из бороды этого программиста?))
30 октября 2009 в 23:05
надо спросить у Си-кодера есть ли у него кактус слева от клавиатуры)
30 октября 2009 в 23:05
Понятное дело, вы не знаете, какой из кодеров на чем кодит и они не показывают )) В этот момент они смотрят СаусПарк в прямой трансляции и им не до программирования)