singlepost

2. Головоломка от braingames.ru (первым решил Александр Бохан) << На главную или назад  

В чулане программируют Си-кодеры, они всегда говорят правду, и Java-кодеры, они всегда врут. Кто из программистов на чем кодит, неизвестно. Все программисты перемешаны в чулане.
Как, зайдя в чулан и задав всего один вопрос одному программисту из чулана, понять, есть ли у него кактус слева от клавиатуры, если нельзя задавать вопрос, содержащий слова "ЛЖЕЦ, ПРАВДЕЦ, ПРАВДА, ЛОЖЬ"?

114 ответов в теме “2. Головоломка от braingames.ru (первым решил Александр Бохан)”

  1. 54
    Глеб Раздолбаев ответил:

    Я вот придумал ещё более изящный способ. Надо, войдя в чулан, сразу же во всеуслышание заявить: "Джава тормозит". Те, кто с кровожадным видом обернутся в вашу сторону, скорее всего, и есть те самые. Пока они тащат вас на костер, можно поинтересоваться у них насчет кактуса.

  2. 53
    Сильвестр Сталлоне ответил:

    А я подумал, что это как-то связано со стеком потока в джаве) Может он там как-то не так обрабатывается и поэтому у них не бывает переполнения %)

  3. 52
    Глеб Раздолбаев ответил:

    Да, меня чо-то прёт уже:))

  4. 51
    Сильвестр Сталлоне ответил:

    Он просто ответит "нет" =)

  5. 50
    Глеб Раздолбаев ответил:

    Потому что выглядит внушительно:)) Если честно, я его нагуглил. Это один из ответов на загадку о двух стражах и двух дверях.

  6. 49
    Сильвестр Сталлоне ответил:

    :) Мой засчитанный ответ звучал так:
    "Если бы я спросил тебя, есть ли у тебя кактус справа от клавиатуры, что бы ты мне ответил?"

    Но это примерно то же самое)

  7. 48
    Глеб Раздолбаев ответил:

    Математически, правилен любой способ заставить лжеца совершить двойную инверсию:)

    А вот если спросить программиста на джаве: "Всегда ли ты врёшь?", случится ли у него переполнение?

  8. 47
    Сильвестр Сталлоне ответил:

    Очень щепетильные к родному языку программисты :) Правильный длинный вопрос тут уже дан. Пытаться его повторить я смысла не вижу. Пытаться сделать что-то совсем некрасивое – тоже.
    Есть короткий красивый литературный вопрос, вот его можно попытаться найти, но xor там совсем "не в кассу")

  9. 46
    Глеб Раздолбаев ответил:

    Каноническое решение: можешь ли ты утверждать, что слева от твоей клавиатуры кактус? Но оно ориентировано на определенный алгоритм вранья.

  10. 45
    Сильвестр Сталлоне ответил:

    Почему это – каноническое? :)
    А так да, это правильное и короткое.

  11. 44
    Глеб Раздолбаев ответил:

    Тогда так:
    (Есть ли у тебя кактус слева от клавиатуры) xor (ты программист на Джаве)?
    С-программер ответит a xor 0 = a
    Джава-программер, не умеющий врать рекурсивно, ответит !(a xor 1) = !!a = a, что нас вполне устраивает.
    И даже если он врет полностью рекурсивно, он ответит !(!a xor 0) = !!a = a.
    А вот если он врет только в операндах, он ответит !a xor 0 = !a, что нас не устраивает совершенно.

  12. 43
    Сильвестр Сталлоне ответил:

    Ненене, программисту надо все вопросы литературно задавать, в этом подвале сплошные ценители Гоголевского языка и стихов Фета.

  13. 42
    Глеб Раздолбаев ответил:

    Да какие ж они программисты, если они xor не могут вычислить.

  14. 41
    Сильвестр Сталлоне ответил:

    Скажем так: программист выделяет в вопросе отдельные простые высказывания, переводит вопрос в форму логического выражения, после чего вычисляет его истинность. Если спросить у непьющего от рождения программиста, перестал ли он пить коньяк по утрам, то он просто не сможет ничего ответить.

    По правде говоря, я никогда до конца не знал ответ на этот вопрос, но в большинстве задач предполагается отрицание лжецом итога, а не частей. Лжецы патологические, врут ради вранья, а не ради запутывания.

  15. 40
    Глеб Раздолбаев ответил:

    хорошо, перефразирую: если вопрос представляет собой логическое выражение, лжец инвертирует только результат, только операнды или и то, и другое? Или выражения булевой алгебры вообще нельзя использовать?

  16. 39
    Александр Бохан ответил:

    сдаюсь

  17. 38
    Сильвестр Сталлоне ответил:

    Любое выражение может быть или правдой, или ложью. Вот лжец это дело "переворачивает" =)

  18. 37
    Александр Бохан ответил:

    еще подумаю

  19. 36
    Глеб Раздолбаев ответил:

    хорошо, есть выражение a xor 1;
    Лжец представит его как !a xor 0 или как !(!a xor 0), или как !(a xor 1)?

  20. 35
    Сильвестр Сталлоне ответил:

    как !(a xor 1)

    Но при этом спрашивать у программиста что-то сложнее, чем 1? или 0? некрасиво, и они это не любят :)
    Но если а, и 1 – выражения, то и на них он соврет =)

    А вообще это зависит от того, как сформулированы скобки и ксор :)

  21. 34
    Владислав Чечёткин ответил:

    Я зопутолсо (
    Но в цикл кодера все равно воейдет

  22. 33
    Сильвестр Сталлоне ответил:

    Этот вопрос дает понять, лжец или правдивец этот человек, т.к. честный ответ должен быть "нет". А лживый – "да".

    А второй вопрос – непосредственно вопрос, на который лживый ответит да, а правдивый ответит "нет" (т.е. ответы совпадут), а если кактус есть, то ответы не совпадут =)

    Это логичный способ) Но можно проще и красивше =)

  23. 32
    Александр Бохан ответил:

    вместо этого можно было написать любой другой вопрос, ответ на который всегда будет "нет", и по-моему нету тут никаких зацикливаний

  24. 31
    Глеб Раздолбаев ответил:

    А что ответит программист на джаве, если я спрошу у него:
    "(Есть ли у тебя кактус слева от клавиатуры) xor (2*2 == 4)?"

    В смысле, он инвертирует только исходные посылки, или только результат, или и то, и другое? Как у него вральный модуль устроен?

  25. 30
    Владислав Чечёткин ответил:

    Блин, так не честно, я это же написал чуть раньше >_< Александр просто хитрожопо соединил два вопроса в один…

  26. 29
    Сильвестр Сталлоне ответил:

    Александр, интересно искать красивое решение или дать ещё задачу? =)

  27. 28
    Сильвестр Сталлоне ответил:

    Да, это решение. Но есть красивый короткий вопрос. Он короче более чем в два раза :)

  28. 27
    Владислав Чечёткин ответил:

    Если бы у тебя не было кактуса слева от клавиатуры, как бы ты ответил на вопрос "есть ли у тебя кактус слева от клавиатуры"?

    А по моему этот вопрос вводит в цикл мозг врущего кодера )) Допустим, кактуса у него нет, он хочет соврать (кактус есть), он бы ответил "есть", но вторая часть вопроса заставляет его врать по этому поводу и он хочет ответить нету… Но т.к. это есть честный ответ, то цикл начинается с начала.

  29. 26
    Александр Бохан ответил:

    одинаковы ли ответы на вопросы: если бы у тебя не было кактуса слева от клавиатуры, как бы ты ответил на вопрос "есть ли у тебя кактус слева от клавиатуры" и есть ли он у тебя там в действительности?

    ответ "нет, не одинаковы" – кактус есть;
    ответ "да, одиниковы" – кактуса нет

  30. 25
    Сильвестр Сталлоне ответил:

    Не факт. Вообще неизвестно, что там у них с кактусами =)
    Это вообще чулан, может они там и не держат растительность. А может и держат. А может у программиста дома слева от клавиатуры есть кактус? Надо узнать :) ))

  31. 24
    Сильвестр Сталлоне ответил:

    А если разбиение на команды у них иное? ;) По принципу цвета волос, блондины – одна команда, брюнеты – другая?))))

  32. 23
    Сильвестр Сталлоне ответил:

    В вопросе не должно быть слов "ЛЖЕЦ, ПРАВДЕЦ, ПРАВДА, ЛОЖЬ".

  33. 22
    Владислав Чечёткин ответил:

    Можно, вроде, тока через два вопроса… То есть, первый вопрос индифицирует собеседника (спросить что угодно, на что ответ всегда будет нет), а дальше уже понятно.

  34. 21
    Сильвестр Сталлоне ответил:

    Можно за один вопрос.

  35. 20
    Владислав Чечёткин ответил:

    Хм, а кактус у каждого кодера только один? :)

  36. 19
    Майк Миллер ответил:

    это же тривиально: независимо от перестановки логического отрицания я всегда буду получать инвертированный ответ ;)

  37. 18
    Майк Миллер ответил:

    ну если перепутаны все, то надо подумать, думаю решение гдето в крошках и пиве

  38. 17
    Сильвестр Сталлоне ответил:

    :) нет, в целом, думал ты в верном направлении, хотя и неправильно, попади ты к двум правдивцам и твой вопрос не сработал бы.

  39. 16
    Владислав Чечёткин ответил:

    Имхо это не решается оО
    Потому, что если тебе ответили нет, то это либо нет либо да (т.е. кодер либо Си либо Ява), а если тебе ответили да, то это либо да либо нет…

  40. 15
    Майк Миллер ответил:

    слушай а сами то они друг друга отличают верно? =)

  41. 14
    Майк Миллер ответил:

    Как ты думаешь считают ли программисты из другой команды что у тебя есть кактус?

  42. 13
    Сильвестр Сталлоне ответил:

    Майк, если они отличают друг друга, тогда решение верное. А если не отличают?

  43. 12
    Антон Щиров ответил:

    А это не важно отличают или нет. Он же не будет спрашивать. А ответ другой команды он знает :)

  44. 11
    Майк Миллер ответил:

    так неинтересно)

  45. 10
    Сильвестр Сталлоне ответил:

    Наоборот, вот так как раз задача становится интересной =)

  46. 9
    Майк Миллер ответил:

    Как ты думаешь считает ли вон тот программист с крошками в бороде что у него есть кактус?

  47. 8
    Сильвестр Сталлоне ответил:

    Ну и вот ты получил ответ "нет", какой ты сделаешь вывод?

  48. 7
    Майк Миллер ответил:

    пойму что кактус гдето рядом, скорее всего слева от клавиатуры.

  49. 6
    Сильвестр Сталлоне ответил:

    Ну вот если тот программист правдивый, и этот правдивый, то тот бы посчитал, что у него нет кактуса, этот бы передал тебе, что тот бы посчитал, что кактуса нет. А ты решишь, что он есть. Облом.

  50. 5
    Майк Миллер ответил:

    Если да то кактуса у него нет. а они там еще могут быть все перепутаны?
    то есть они не сидят отдельными неидентифицированными кучами?

  51. 4
    Сильвестр Сталлоне ответил:

    Конечно все перепутаны =)

  52. 3
    Сильвестр Сталлоне ответил:

    Вопрос второй, для тех, кто справится с первым – как при этом не подскользнуться в чулане на бутылке пива и не унюхать крошки от чипсов из бороды этого программиста?))

  53. 2
    Майк Миллер ответил:

    надо спросить у Си-кодера есть ли у него кактус слева от клавиатуры)

  54. 1
    Сильвестр Сталлоне ответил:

    Понятное дело, вы не знаете, какой из кодеров на чем кодит и они не показывают :) )) В этот момент они смотрят СаусПарк в прямой трансляции и им не до программирования)

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.