1. Имеются 4 карты. На одной стороне каждой написана буква русского алфавита, на другой стороне — цифра от 1 до 9. Карты лежат на столе, повернутые к нам разными сторонами, и мы видим следующую картинку: «А, Г, 4, 9». Какое наименьшее кол-во карт (и какие именно карты) нужно перевернуть, чтобы подтвердить или опровергнуть утверждение: «Из числа этих четырех карт на каждой карте с гласной буквой написана четная цифра».
2. Имеются две двери, за одной из них — смерть, за другой — жизнь. У каждой двери стоит охранник. Охранники бывают трех видов: правдивые (на все вопросы отвечают истину), лживые (на все вопросы отвечают ложь) и хитрецы. Хитрец чередует ответы. Если на очередной вопрос он ответил ложью, то на следующий вопрос обязательно ответит истиной, и наоборот. Но неизвестно, как хитрец ответит на первый заданный ему вопрос, это может быть с равной вероятностью как ложь, так и истина.
Мы не знаем, за какой дверью смерть. Мы не знаем, какого типа охранники стоят рядом с дверьми. Мы знаем лишь то, что рядом с одной из дверей стоит хитрец, а рядом с другой дверью стоит либо правдивый, либо лживый охранник. Охранники знают, что скрывается за каждой из дверей, и знают, какого типа они сами и какого типа их сосед.
Требуется: за 2 вопроса, предполагающие ответы «Да» или «Нет», заданные одному и тому же охраннику, выяснить, за какой дверью жизнь.
3. На бесконечную прямую на парашютах сбрасывается два робота в две разные точки. Роботы отстегивают парашюты на месте своего приземления, и далее действуют согласно программе, которая у них обоих одинаковая и написана на языке, имеющем следующие команды:
а) шаг влево (L);
б) шаг вправо (R);
в) перейти на строку с номером N (goto N)
г) если в текущей точке есть парашют, перейти на строку с номером N (if парашют goto N).
Нужно составить программу для роботов таким образом, чтобы они обязательно встретились.
Ответ к первой задачке нужно было дать быстро. Для 2 и 3 задач давали на раздумье 5-10 минут. К сожалению, в первой задачке я облажался и дал неверный ответ. Попался, как неразумный зверь, в расставленную ловушку :) Однако 2 и 3 задачки я решил, хотя в третьей пошел сначала по неверному пути, отчего решил ее уже после того, как истекло время на раздумья. В целом, получил удовольствие от решения этих задач. Надеюсь, вы тоже получите. Только не подглядывайте в интернет, не лишайте себя положительных эмоций :) Задачки очень простые.
P.S. В конференц-зале компании, где меня собеседовали, имелись доски, испещренные
«Blowjob <номер мобильного телефона> Анна»
К сожалению, телефончик записать не успел, было как-то неудобно показывать свой интерес.
Upd: В комментах СПОЙЛЕРЫ.
January 16 2009, 15:49:23 UTC 3 years ago
January 16 2009, 15:50:15 UTC 3 years ago
да и вообще не люблю задачи)
January 16 2009, 15:52:40 UTC 3 years ago
January 16 2009, 16:12:42 UTC 3 years ago
January 16 2009, 16:19:16 UTC 3 years ago
January 16 2009, 16:39:15 UTC 3 years ago
Вариант 2 - две, с А и с 4.
3 years ago
3 years ago
January 16 2009, 16:25:39 UTC 3 years ago
2) Лень читать условие
3) Знаю я эту задачу. Её вообще любят задавать. Фишка в скорости. Они оба идут в одном направлении и как только один из них натыкается на парашют -- он начинает догонять второго.
P.S. Что ж ты телефон не запомнил? :))
----------
А вообще, я не люблю такие задачи. Они на самом деле ничего не говорят о пациенте. Точнее говорят, но не то, что нужно на реальной работе. Дело вот в чём. Надо понимать разницу. Одно дело, когда ты выдумываешь какой-нибудь алгоритм (вообще-то это работа для математика, по большому счёту), а другое дело, когда перед тобой стоят инженерные задачи (обеспечить отказоустойчивость и производительность системы в каких-нибудь ограничениях, например). Супер-пупер смекалка поможет в первом случае, а вот во втором нужно знать технологии.
Если посмотреть с другого боку, то следует понять ответ на следующий вопрос: "почему опытным разработчиками платят возможно в разы больше, чем новичкам?". Может быть они умнее в 2 раза? или они код фигачат так, что клавиатура дымится? Нет. Все это не верно. А платят им больше за то, что они:
1) Могут более спокойно работать в условиях внешнего давления (они уже попадали в стрессовые ситуации)
2) Они могут вспомнить аналогичные ситуауции из предыдущего опыта и не совершать ошибок
3) Они могут прикрыть задницу менеджера проекта, когда требуется принять ответственное решение по срокам и сложности задач, в т.ч. могут задать правильные вопросы, т.к. уже были ситуации, когда возникали проблемы.
Короче говоря, эти старшие разработчики более тёртые калачи. И только за это им платят больше, а не за их гениальный код. Более того, они как правило более ленивые, чем новички, т.к. понимают, что впахивать по 12 часов смысла нет, ибо если не здесь, так где-нибудь в другом месте, они обязательно заработают денег...
January 16 2009, 16:28:35 UTC 3 years ago
January 16 2009, 16:31:09 UTC 3 years ago
January 16 2009, 16:30:36 UTC 3 years ago
January 16 2009, 16:31:29 UTC 3 years ago
January 16 2009, 16:33:52 UTC 3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
January 16 2009, 16:38:02 UTC 3 years ago
January 16 2009, 16:38:55 UTC 3 years ago
January 16 2009, 18:47:59 UTC 3 years ago
2-я - жесть, я реально словил кайф, когда придумал решение. Но потратил минут 20.
В 3-ей надо бы уточнить, должна ли программа быть конечна. Первое, что пришло мне в голову - заставить роботов "вращаться" вокруг своих парашютов, увеличивая радиус, но это как раз будет бесконечная программа, что вроде как не противоречит условию.
January 16 2009, 19:12:27 UTC 3 years ago
Я, кстати, тоже поначалу пытался их "завращать".
January 16 2009, 19:13:12 UTC 3 years ago
January 17 2009, 12:02:47 UTC 3 years ago
Мой вариант: "Если я задам тебе вопрос, ответишь ли ты на него в следующий раз так же, как сейчас?".
Если ответ "да" - в следующий раз будет правда. Если "нет" - ложь.
А условие, что охранники знают друг о друге, да и вообще, что их два - избыточно.
3 years ago
3 years ago
January 17 2009, 00:27:57 UTC 3 years ago
1) А и 9, ибо переворачивание Г нам не нужно абсолютно (на согласные нам пофиг), любое значение на обороте 4 не нарушает истинности импликации. Так что ищем возможную ситуацию "истина->ложь", в данной формулировке - "гласная-нечётная".
2) Первый вопрос произвольному охранику - "Ты хитрец?". Если пациент ответил "Да", то либо он лжец, либо хитрец, сказавший правду, следовательно следующим ходом он при любом раскладе соврёт. Если "Нет" - то либо это честный, либо совравший хитрец -> в следующий кон он говорит правду. Ну а дальше интересуемся, Смерть ли за его дверью и соотносим с правдивостью.
3) Классика. Ведём в одну сторону, елси нашёл парашют - ускоряем в два раза.
1. L
2. IF P GOTO 4
3. GOTO 1
4. L
5. L
6. GOTO 4
January 17 2009, 04:21:36 UTC 3 years ago
3) Мб и классика, но я не знал. Решил почти также (у меня была чуть другая реализация, но это несущественно).
January 29 2009, 13:40:21 UTC 3 years ago
Deleted comment
January 17 2009, 05:00:06 UTC 3 years ago
January 29 2009, 14:05:55 UTC 3 years ago
January 31 2009, 13:23:45 UTC 3 years ago