image

Добрый день, Хабровчане!

Собеседование, особенно если ты его не прошёл :), вещь не очень приятная. Но мой папа — преподаватель математики часто говорил, что экзамен — это не только способ оценить знания, а и самый действенный метод обучения. Именно на экзамене (в данном случае собеседовании) человек как никогда мотивирован и его мозг работает на все 100%.

Кроме того на собеседовании иногда задают очень интересные логические задачки. Вот именно о них я и хочу написать.

Итак, самые интересные задачки которые мне задавали на собеседовании:

Задачка 1: Про бассейн, лодку и гирю

Есть маленький бассейн. В нём плавает лодка. На стенке бассейна отмечен текущий уровень воды.
Ещё есть чугунная гиря. В каком случае уровень воды в бассейне поднимется больше: если опустить гирю в воду, или если опустить гирю в лодку?

Задачка 2: Про бикфордовы шнуры

Есть два бикфордовых шнура и зажигалка. Шнуры могут гореть неравномерно. Единственное что о них известно — это то, что гореть каждый из них будет ровно час. Как с помощью этих предметов засечь 45 минут?

Задачка 3: Про скалу и верёвку

Вертикальная скала высотой 100 метров. На вершине вбит крюк за который можно привязать верёвку. Прямо под этим крюком на высоте 50 метров есть небольшая площадка на которую можно встать и ещё один крюк. На вершине скалы стоит альпинист. У него есть 75 метров верёвки и нож что-бы её резать. Как альпинисту спуститься со скалы? Длиной верёвки потраченной на узлы пренебрегаем.

Задачка 4: Про планету и особые точки

Есть ли на планете Земля точки (если есть, то где они находятся), удовлетворяющие следующему условию: Если пройти из точки 100 км на север, потом 100 км на восток, а потом 100 км на юг, то окажешься в исходной точке.

Две из этих задачек я находил в интернете. Немного по-другому сформулированных.
Две не нашёл. Может плохо искал.
Пишите свои ответы в коментах.
А главное, пишите свои интересные задачки, и ссылки на ресурсы где их можно найти.

Комментарии (94)


  1. Rend
    14.11.2017 01:03

    Задачка 4
    Южный полюс


    1. Andrey_139 Автор
      14.11.2017 01:07

      Третья правильно
      Четвёртая: этих точек гораздо больше


      1. StepFan
        14.11.2017 01:20

        А, дошло.

        Вас предупреждали

        Масштаб не соблюден.


        1. Andrey_139 Автор
          14.11.2017 01:34

          Плюс ещё где длина окружности равна 50, 33.3, 25 и т.д


      1. Rend
        14.11.2017 01:31

        Четвёртая, где точек действительно больше
        Действительно, пройдёт для всех точек параллелей северных широт, которые на 100 км южнее тех параллелей, у которых длина окружности равна 100/N км, где N целое от 1.


        1. Andrey_139 Автор
          14.11.2017 01:38

          Совершенно точно!


        1. PapaBubaDiop
          14.11.2017 01:45

          А самая южная из параллелей 88,90 градусов с.ш.


        1. Fragster
          14.11.2017 13:01

          нет


    1. CodeName33
      14.11.2017 10:54

      Ваш ответ третьей задачи хорош. А вот мне пришло в голову только это:

      Убийственное решение
      — Привязать веревку на верхний крюк
      — Спуститься до нижнего крюка и привязать низ веревки (50й её метр) к нижнему крюку
      — Снова подняться по веревке наверх на 49,5 метров
      — Обрезать веревку и пролетев 99 метров, остановиться держась за веревку в полуметре от земли
      — Спрыгнуть на землю :)

      Для этого достаточно всего 50м веревки, а не 75. Вероятность выживания альпиниста не 100% :)


      1. andriy_vityk
        14.11.2017 16:37

        Есть ещё одно убийственное решение, которое иногда даже используется: узел «камикадзе».


  1. StepFan
    14.11.2017 01:09

    Спойлер!
    В первой интуиция говорит, что в в случае, если гирю положить в лодку.
    Во второй надо шнуры с обеих сторон поджигать, дабы 30 минут и 15 минут отмерить.
    В четвертой — как минимум одна.

    Полюс поменять на южный.


  1. wiki7979
    14.11.2017 01:18

    Задача 4
    Счетное число несчетных точек плюс одна.


  1. Sdima1357
    14.11.2017 01:19

    Один шнур с обоих сторон а второй с одной стороны, а через полчаса, когда сгорит первый, и со второй стороны


    1. genew
      14.11.2017 07:20

      В условии сказано, что шнуры горят неравномерно. Что если первая половина шнура горит быстрее чем вторая половина?


      1. Yak52
        14.11.2017 07:50

        Встретятся огоньки все равно через пол часа, просто место встречи не будет в середине шнура. Это как искать центр масс на швабре.


  1. Nick_mentat
    14.11.2017 01:38

    1
    В лодке вытеснит больше


    1. DEM_dwg
      14.11.2017 07:03

      Как сложно вы решаете задачу №3
      Делается все проще, отрезаете кусок длинной 25 м, делаете в нем петлю и привязывате к крюку. Оставшиеся 50 м продеваете в петлю и спускаетесь ровно на 50 м=(25+50/2).
      Далее вытягиваете 50 м кусок и привязываете его к крюку, спускаетесь еще на 50 м.


      1. Nick_mentat
        14.11.2017 10:37

        Не надёжное решение… Я не альпинист, но мне кажется что спуск по двум незакреплённым концам это чит и в реальном мире так бы не рисковали (если чуть чуть соскользнул на одной верёвке, то вторая немного сместилась относительно первой вверх — длины не хватит снизу, придётся спускаться до верхнего из двух концов, привязывать его где попало, подниматься на середину, поднимать верёвку, развязывать и начинать сначала). Лучше как в моём варианте — один из двух перекинутых в петлю 25 метровых концов закреплён уже на крюк внизу, а по второму спускаемся. Так более инженерно, как мне кажется.


        1. DEM_dwg
          14.11.2017 11:20

          Неее…
          Решение нормальное, когда вы продеваете веревку через петлю то получается простейший блок.
          Да и вообще главное же решить задачу с помощью наименьшего количества действий и условий.


        1. Ogra
          14.11.2017 11:22

          спуск по двум незакреплённым концам
          Можно связать в кольцо.


          1. Nick_mentat
            14.11.2017 12:25

            Вот так — да, соглашусь. Лучшее решение.


        1. thrasher1980
          14.11.2017 16:38

          Объясняю как альпинист :)
          1. Режем верёвку на 25 и 50 м.
          2. Делаем петлю на конце 25-метровой верёвки из сдвоенной «восьмёрки» (так надежнее).
          3. Привязываем к точке свободный (без петли) конец 25метровой верёвки.
          4. Привязываем к себе 50 метров оставшейся части.
          5. Вщёлкиваем спусковое устройство (пусть будет «стакан»)в 25-метровую верёвку.
          6. Начинаем спуск
          7. Едем(спускаемся) до петли.
          8. Блокируем спусковое устройство. Вщёлкиваем жумар с усом(петлё) 1 м.
          9. Зависаем на жумаре таким образом, чтобы разгрузить спусковое.
          10. Продеваем один конец 50м верёвки через петлю, что на 25метровой верёвке. Завязываем на нём узел (грепвайн)
          11. На втором конце 50м верёвки также завязываем узел (грепвайн).
          12. Спускаем 50 м верёвку вниз следя за тем, чтобы узлы были рядом.
          13. Выщелкиваем спусковое устройство из 25 м верёвки.
          14. Вщелкиваем спусковое устройство в два конца 50метровой верёвки.
          15. Блокируем спусковое устройство. Загружаем его (зависаем на нём)
          16. Выщелкиваем жумар.
          17. Разблокируем спусковое и едем вниз до площадки.
          Узлы на концах не дадут верёвке вылететь из спускового устройства!

          На площадке:
          1. Пристраховываемся к точке спуска
          2. Выщелкиваем спусковое устройство
          3. Развязываем 1 узел в конце верёвки
          4. Привязываем этот конец к точке спуска.
          5. Развязываем второй узел на конце верёвки
          6. Сдёргиваем верёвку (тянем за привязанный к точке конец)
          7. Когда верёвка упала на площадку, на свободном (непривязанном) её конце делаем узел для страховки и сбрасываем вниз
          8. Вщелкиваем спусковое в верёвку
          9. Выщелкиваем страховку
          10. Едем до земли.


  1. Rend
    14.11.2017 01:47

    Задачка 1
    Уровень поднимется пропорционально вытесненному объёму воды. Только в случае ещё плавающей лодки вытесненный объём обратно пропорционален плотности воздуха, в в случае кидания гири напрямую — обратно пропорционален плотности гири.

    То есть классический ответ — гиря вытеснит меньше.

    Однако в задачке не указано, что за лодка (обычная, или подводная) и есть ли в гире пустоты. В случае подводной — гиря вытеснит больше ;)


    1. vanxant
      14.11.2017 02:14

      Дедушка Архимед с вами не согласен


    1. mrsantak
      14.11.2017 02:26

      Задачка 1
      Если лодка после опускания в неё гири затонет, то уровень воды и опуститься может.


      1. Dragner
        14.11.2017 08:52

        Затонувшая, с гирей, лодка вытеснит воды больше, чем просто затонувшая гиря. Объём лодки прибавится.


        1. Ogra
          14.11.2017 09:23

          У лодки может быть большое водоизмещение при небольшом объеме. Соответственно, плавающая она будет вытеснять воды много, а затонувшая — чуть-чуть.


          1. Dragner
            14.11.2017 10:53

            Я пока не могу писать без модерации своих сообщений, поэтому не смог дополнить:
            Рассматривались система — затонувшая гиря и система — затонувшая гиря + затонувшая лодка.
            Если рассматривать системы: затонувшая гиря + лодка на поверхности воды и затонувшая гиря и затонувшая лодка, то, во втором случае уровень, воды даже понизится.
            P.S. Читал быстро, поэтому на сообщении https://habrahabr.ru/post/342304/#comment_10519546 воспринял «уровень воды» как «объём воды».


        1. quantum
          14.11.2017 09:28

          del. опоздал


  1. reversecode
    14.11.2017 02:33
    +1

    Самое смешное что в этих задачках нет ничего логического
    А умение их решать никак не связанно с программированием
    Но почему иногда их любят притянуть на собеседования
    Помнится не очень давно проскакивала новость, о том что по моему даже в гугле от них отказались на собеседованиях


    1. quwy
      14.11.2017 03:09

      Зато какой шикарный способ унизить соискателя и срезать его зарплатные ожидания!

      Хотя первая задача и отличается от остального интеллектуального анонизма, но как знание двух простых физических законов соотносится с умением говнокодить — загадка.


      1. MurzikFreeman
        14.11.2017 10:50

        Зато какой шикарный способ унизить соискателя и срезать его зарплатные ожидания!

        Это может и сработает, но только в случае если для соискателя эта работа будет первой. В противном случае, глупые задачки от HR'а, не относящиеся к будущей работе, вызовут обратный эффект.


      1. Naerus
        14.11.2017 12:46

        Ну скорее всего соотносится как знания принципов работы каких-либо элементов или даже просто оптимизации. Мы же задачу по вытеснению решаем в любом случае, вопрос как решить её лучше и улучшить результат. Мне чем-то напоминает старое тривиальное объяснение разницы между else-if и switch. Мол else-if на определенном маленьком количестве условий быстрее switch, и сравнивая с данной задачкой, мы можем опустить гирю в лодку и вытеснение будет больше, но если она утонет, может выйти даже хуже, чем просто утопить гирю. Это как знание классов и прочее в программе, есть вещи очевидные, а есть интересные решения в тех же условиях, которые требуют соответствующих знаний.


      1. kozzztik
        14.11.2017 17:15

        У любого нормального кандидата на руках стабильно несколько офферов. Снижать его зарплатные ожидания, это как стрелять себе в ногу.


      1. Idot
        15.11.2017 08:22

        шикарный способ унизить соискателя и срезать его зарплатные ожидания!

        Может практиковаться и просто ради Культа Карго, без связи с зарплатой, но с отсевом тех, кто задание завалил.


    1. mbait
      14.11.2017 03:45

      От них не только в гугле отказались, а вообще везде. Да и сами задачи бородаты до невозможности. Возможно, автор не прошёл собеседование в 2005-ом, сильно расстроился и впал в стазис, а теперь вышел из него, но ещё не знает, что на дворе 2017-ый, и теперь унижаютсобеседуют иначе .


    1. lxsmkv
      14.11.2017 05:47

      да уж, похоже на вступительный тест в клуб имени Нильса Бора.


  1. sbnur
    14.11.2017 06:16

    Думается для отбора программистов лучше подходят задачи типа загадки Эйнштейна


    1. domix32
      14.11.2017 10:47

      С решением на прологе.


      1. sbnur
        14.11.2017 10:55

        пролог хорошо правит логику


  1. AlexZaharow
    14.11.2017 08:33

    Задача 1. Архимед одобряет!
    image

    Главное не убежать голым с собеседования.


  1. jeka_odessit
    14.11.2017 08:54

    №3 - смотря из чего веревка
    Если это обычный канат, то можно распутать пополам и связать вместе, тогда и платформа не нужна.

    Другой вариант, наверняка есть какой то узел, который при постоянном натяжении не развяжется, а при подергивании или при резком рывке да, тогда можно такой сверху связать, спуститься до 50м, подергать там или еще че, и продолжить.

    Третий вариант: Отрезать 25м и привязать к петле, потом сделать еще одну петлю на оставшемся конце.
    На 50м куске сделать петлю для ноги и продеть в петлю на 25м. Спустившись до 25м, вставить ногу в петлю на 50м куске (заранее сделанной), и держа другой конец руками спустить себя до платформы. т.к. 50м кусок у вас остался, просто завязать на платформе и все.


    1. Nick_mentat
      14.11.2017 10:42

      Распутать не вариант — возможно что не хватит прочности у троса половинной толщины.
      Узел при подёргивании как раз не надо — верёвка нужна как раз как страховка, т.е. если сорвёшься.


    1. kukarekuu
      14.11.2017 12:46

      Еще один вариант 3 задачи
      По-моему, самый простой вариант — просто продеть в этот верхний крюк веревку, сложить ее и спуститься вниз по сложенной надвое веревке. Потом потянуть её вниз, стоя на уступе, и спуститься на землю, имея на руках целую веревку в 75м


      1. Andrey_139 Автор
        14.11.2017 12:48

        Только если сложить вдвое — получится 37.5 метров, а нужно 50


        1. kukarekuu
          14.11.2017 16:45

          Да-да, с утра казалось, что ничего сложного в задачке нет)


  1. resetme
    14.11.2017 10:00

    Эти задачки выглядят понятнее и проще на фоне задачи, которую задали в 4 классе мое дочке:

    Два одинаковых ящика с песком со стороной ребер 1 метр. В один ящик выливают литру воды, а во второй литру газировки. Что быстрее протечет через ящики вода или газировка?


    1. domix32
      14.11.2017 10:49

      Это что-то про физику и плотность или просто случайная задачка на эрудицию была?


    1. Nick_mentat
      14.11.2017 11:03

      Песка слишком много. За счёт поверхностного натяжения жидкость будет формировать мостики между крупицами песка, отверстия в получившейся водно-песочной структуре будут создавать высокое давление стягивающейся поверхности жидкости, вода будет проникать в глубь песка за счёт давления высоты столбика жидкости, но с увеличением глубины проникновения вода будет смачивать всё больше песка, значит всё меньше воды будет учавствовать в формировании гидростатического давления, и всё больше — в механическом давлении сил адгезии. Эти силы будут ещё больше сжимать вещество (слипающийся песок) что потребует ещё большего давления для перколяции. В итоге вода не должна дойти до дна ящика, или до стенок — она будет в песке пока не испарится. Наличие пузырьков воздуха на исход не повлияет. Если уменьшить или убрать поверхностное натяжение то тогда жидкость может протечь через кубометр песка. Рекомендую использовать сверхтекучий гелий. Газированый сверхтекучий гелий будет двигаться медленнее, поскольку углекислый газ при контакте с ним будет замерзать, а значит газированный сверхтекучий гелий = гелий с гранулами замёрзшей углекислоты. Т.е. в среднем еденица жидкости должна будет протечь мимо песка + мимо гранул которые в ней содержатся, это будет немного дольше.
      Если же поиграться с условиями задачи, то можно сказать что жидкость выливают в ящик вблизи его стенки, и тогда часть будет просачиваться через стенки. В этом случае у газированной воды будет преимущество. Большая часть газа улетучится, но часть пузырьков осядет на песке, и сформирует дополнительную подушку, которая воспрепятствуют проникновению воды в песок, и большее её количество прольётся через край (если предположить что ящик деревянный, в нём широкие щели и просачивание жидкости через стенки вообще имеет место).
      Также можно увеличить объём воды, чтобы сделать его достаточным для смачивания всего песка в ящике. В таком случае газировка будет делать это немного медленнее (пузырьки газа будут мешать формированию мостиков) и раньше накопит достаточное гидростатическое давление чтобы использовать максимальную площадь боковой поверхности ящика чтобы вытекать через неё. Однако при дальнейшем увеличении количества воды первенство возьмёт негазированная, т.к. она раньше достигнет дна ящика и песок начнёт функционировать как дроссель.


      1. resetme
        14.11.2017 12:14

        Да, хорошо, что вы представляете, что такое физика, но детям зачем такие дают в 4 классе?
        Я подозреваю, что такие задачи дают чтобы дети обратились к родителям за помощью, а те в свою очередь напрягли мозги… или Интернет.

        Кстати, кто-нибудь нашел решение этой задачи в инете?


        1. victorbo
          14.11.2017 21:55

          Может, плотность газировки выше, чем плотность воды, а потому и она дольше будет проникать в песок и быстрее польётся наружу


    1. Andrey_139 Автор
      14.11.2017 12:50

      Может имеется ввиду что ни вода, ни газировка вообще не пройдут метр песка?


      1. resetme
        15.11.2017 06:10

        Скорее всего это верный ответ. Метр песка все таки много.
        Метра песка у меня нет, но есть цветок в большом горшке. В него легко можно вылить 1 литру воды и она не выйдет из нижних отверстий горшка. Если пренебречь, что в горшке земля, то это можно взять как подходящий эксперимент для этой задачи.


    1. dro1d
      14.11.2017 12:51

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


  1. Dzen1
    14.11.2017 10:11

    Есть две переменные a,b — a = 5, b = 2. Нужно поменять в них значения так что бы b = 5, а а = 2. Как это сделать?


    1. medvoodoo
      14.11.2017 10:46

      python в этой задаче рулит :) a, b = b, a


    1. vdem
      14.11.2017 10:54

      Забыли уточнить — без использования третьей переменной.


      1. Dzen1
        14.11.2017 11:06

        Спасибо за уточнение. Без использования третьей переменной или памяти.


        1. Nick_mentat
          14.11.2017 11:16

          a = a+b, b = a — b, a = a — b, седьмой класс программирование…
          Гораздо интереснее задача станет если
          int a,b
          a = 2147483646
          b = 2
          и обработка переполнения на платформе выдаёт ошибку


          1. Dzen1
            14.11.2017 11:24

            Верный ответ :-).


            1. JuniorForever
              14.11.2017 16:39

              Я знаю другой верный ответ
              a = a ^ b;
              b = a ^ b;
              a = a ^ b;
              Но как поясняют знающие люди, память (кэш) все равно используется при совершении операций.


              1. Sdima1357
                14.11.2017 17:20

                Нет не обязательно используется. Достаточно 2 регистров(intel masm notation)
                XOR eax,ebx
                XOR ebx,eax
                XOR eax,ebx
                и они поменяются местами, что соответствует Вашему коду буквально.
                впрочем можно и так :)
                XCHG eax,ebx

                Кстати в С++ правильнее использовать std::swap() она как правило занимает 0 операций, то есть компилятор делает ее во время компиляции.


  1. bkar
    14.11.2017 10:16

    Просили задачек? Их есть у меня.

    Задачка 1: Про бассейн, лодку и гирю
    Есть маленький бассейн. В нём плавает лодка. На стенке бассейна отмечен текущий уровень воды.
    Ещё есть чугунная гиря. В каком случае уровень воды в бассейне поднимется больше: если опустить гирю в воду, или если опустить гирю в лодку?
    +++
    Предполагаем, что в задаче нет лишних слов.
    Раз бассейн маленький, то это нам тонкий намёк, прямо-таки ружьём по стене, что чего-то может и не хватить, подсказка, что нужно не забыть проверить предельные, граничные значения. Ну и раз бассейн маленький, то не упускаем из виду, что и лодка может быть маленькая.

    И тут вариант опустить (литературнее сказать – поместить) гирю в лодку распадается на целый веер задач:
    Лодка в грузу может встать на дно бассейна, при том что гиря утонула бы с головой.
    Лодка с гирей может остаться на плаву, при том что уровня воды в бассейне не хватит на то, чтобы целиком погрузить в него гирю саму по себе.
    Наконец, лодка с гирей может и… затонуть.
    Тут у нас появляется новое раздвоение условий, которое подводит нас к самой интересной задаче: что мы увидим, по сравнению с просто утонувшей гирей, если лодка из материала плотнее воды (сварена из урановых ломов), а что, если она «пробковая»?


    1. resetme
      14.11.2017 12:17

      А может тогда стоит относить эти задачи к задачам с некорректно поставленными условиями? Раз много решений, значит в постановки задачи что-то пропущено.


    1. Andrey_139 Автор
      14.11.2017 13:03

      Не будте таким занудой!
      Бассейн маленький — потому-что в большом изменение уровня воды будет очень маленьким, на глаз незаметным.
      Лодка с гирей не утонет и не сядет на дно.
      Не развалится и дно лодки не проломится.
      Стенки бассейна вертикальные и при помещении гири в воду или в лодку — вода не перельётся через края бассейна, не уйдёт в слив и тп.
      Испарением воды и разширением-сжатием воды из-за изменения температуры принебрегаем
      Может я ещё что-то забыл
      И при вышеуказаных условиях материал лодки (пробка или уран) не имеют значения.


  1. topy
    14.11.2017 10:44

    Уже сталкивался с решением

    3 задачи
    Разрезаем 75 метров на 50 и 25.
    На концах 25 делаем петли.
    Одну петлю 25-метровой надеваем на крюк, во вторую продеваем сложенную вдвое 50-метровую веревку.
    Спускаемся на площадку и вытягиваем из петли свою 50-метровую веревку. Спускаемся на землю.


  1. KirEv
    14.11.2017 12:01

    Интересно, задач ранее не встречал, ответы которые пришли в голову :)

    1.
    Казалось бы лодка с гирей должна поднять уровень воды выше, чем гиря в воде, но не ясно объем гири (плотность материала, вес и т.п., да и у нас в зале, например, гиря 16кг по объему больше гири 32кг), не известно площадь днища лодки, форма дна (чем больше площадь соприкосновения дна лодки с водой — тем меньше лодка вытеснит воды… при некоторых условиях гиря в бассейне поднимет уровень больше гири в лодке, и наоборот.

    Скорее всего лодка должна вытеснить больше.


    1. valkoivo
      14.11.2017 18:25

      Вторая задача имеет общеизвестное решение, которое в общем случае неправильное, учитывая, что в задаче не указано, успеет ли лампа остыть за время перехода из комнаты в комнату, греются ли вообще лампы. С тем же успехом, можно смело перейти во вторую комнату, разбить все лампы и сказать «Ни одна из них не включается теми тремя выключателями».



  1. pvvv
    14.11.2017 13:04

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


  1. Dzen1
    14.11.2017 13:37

    Когда ходил на собеседования у нескольких работодателей была задача про вёдра ). «Дано: река (воды сколько угодно), ведро 7 литров, ведро 5 литров. Нужно получить: 4 литра, воду можно набирать и выливать сколько угодно.»


    1. Fragster
      14.11.2017 14:22

      Как будто вы крепкий орешек три не смотрели…


    1. Yggaz
      14.11.2017 15:44

      Тут смешно то, что вертеть можно в любом направлении.
      Называем одно ведро ПЕРВЫМ, другое ВТОРЫМ.
      Алгоритм:
      1. Если первое ведро ПУСТОЕ, наполняем его.
      2. Если второе ведро ПОЛНОЕ, опустошаем его.
      3. Если ни 1, ни 2 не имеют места — переливаем из первого во второе. И так до победного конца.
      Смотрите, как оно будет. Пусть первое ведро — на 5 литров. В скобках — действие.
      0 0 (1)
      5 0 (3)
      0 5 (1)
      5 5 (3)
      3 7 (2)
      3 0 (3)
      0 3 (1)
      5 3 (3)
      1 7 (2)
      1 0 (3)
      0 1 (1)
      5 1 (3)
      0 6 (1)
      5 6 (3)
      4 7 — вуаля!
      А теперь пусть первым ведром будет на 7 литров:
      0 0 (1)
      7 0 (3)
      2 5 (2)
      2 0 (3)
      0 2 (1)
      7 2 (3)
      4 5 — ух ты, а так куда быстрее.

      Но если оно вообще получается (а оно получается, когда то, что нужно добыть, кратно НОД объёмов вёдер) — оно получится и так, и так.


      1. Dzen1
        15.11.2017 06:00

        Верный ответ :-). Спасибо.


        1. grumegargler
          16.11.2017 07:50

          Может я неверно понял задачку, и признаюсь, не понял решение. Вот мой вариант: в пустое ведро на 7 литров налить из полного 5. Отметить пальцем уровень, и долить из реки до полноты в 7 литров. Вылить из ведра на 5 литров воду. Из ведра на 7 отлить до отметки в ведро на 5, это будет 2 литра. Затем опять полностью заполнить из реки ведро на 7 и вылить до отметки в ведро на 5. После этого в ведре на 5 будет 4 литра воды.


          1. grumegargler
            16.11.2017 08:17

            Перечитал условие, всё, дошло.


  1. random_username
    14.11.2017 16:41

    Задачка 1: Про бассейн, лодку и гирю
    В данной формулировке имеет множество решений в зависимости от:
    размеров бассейна, лодки, гири, плотности материала лодки относительно гири (упрётся ли лодка в дно, затопит её водой или нет, или останется на плаву)


  1. krpl
    14.11.2017 16:41

    задача 1
    Поскольку в задаче ничего не сказано про материалы лодки и гири, предположим что лодка сделана из материала бесконечно малой толщины и плотности, гиря имеет бесконечно большую плотность, а бассейн — конечные размеры. Тогда опустив гирю в бассейн его уровень увеличится на бесконечно малую величину (т.к. объём гири бесконечно мал). А поместив гирю в лодку — уровень увеличится на конечную величину (т.к. вес гири — конечен), то есть больше чем от помещения гири в бассейн.


  1. aragon_sp
    14.11.2017 17:57

    Рассмотрим вариант если задачу 1 решать буквально — т.е. в бассейне вода при нормальной температуре, гиря (ну допустим пудовая, хотя вес не важен, можно и двух пудовую) сделана из железа, лодка деревянная или пластиковая, нормального размера т.е. не игрушечная и от гири не утонет.
    В такой ситуации когда гиря в лодке уровень будет выше чем когда гиря в воде т.к. плотность гири в 3 раза выше плотности воды. Почему? Находясь в лодке гиря вытеснит воду по весу — три своих объёма. А находясь в воде только один свой объём. Избыток массы можно не учитывать т.к. она лежит на дне.


    1. Andrey_139 Автор
      14.11.2017 17:59

      Вот это самый развёрнутый ответ!


      1. aragon_sp
        15.11.2017 09:07

        Только, стыд и позор, я забыл плотность железа. Гиря в 7.8 раза плотнее воды а не в 3.


      1. BaLeFullPlayEr
        15.11.2017 09:59

        может проще сесть в лодку вместе с гире


  1. lorc
    14.11.2017 18:01

    Мне никогда не задавали такие задачи на собеседованиях. И я никогда не спрашивал ничего такого на собеседованиях. Куда полезнее поговорить с соискателем о его прошлых проектах, узнать почему принимались те или иные технические решения, спросить как бы он решал ту или иную проблему, какие практики они применяли в командной работе и т.д. В таком разговоре можно легко подниматься/опускаться по уровням абстракций, дабы убедится что соискатель понимает и низкоуровневые вещи и высокоуровневые концепции.

    Задавать такие задачи смысла не имеет. Разве что вы нанимаете решателя логических задачек.

    Зато их можно обсудить с коллегами за обедом.


  1. Trif
    14.11.2017 19:14

    Ещё одна задача — похожая на гирю в лодке, но, как по мне интересней: в бассейне льдина, на льдине — лом; что произойдёт с уровнем воды, когда льдина растает (поднимется ль, опустится или останется прежним)?


    1. aragon_sp
      15.11.2017 09:28

      Плотность воды 1, плотность льда 0.9, плотность лома 7.8. Объём лома в куб.см примем за 1 условную единицу. Лом, плавая на льдине, вытесняет не менее 87 у.е. Т.е. если лом переместить со льдины в воду, её уровень упадёт на 86 уе. Потом лёд (в количестве минимум 87 уе) растает и получится вода в объёме 78 уе — уровень воды поднимется, но не до прежнего уровня. Т.е. в итоге уровень воды упадёт не менее чем на 9 уе.


      1. Nick_mentat
        15.11.2017 16:42

        Мне кажется, что если убрать весь лишний лёд (которій никак не повлияет на уровень), и оставить полностью утопленую «подушку» которой хватает ровно на то чтобы держать лом, то она будет объёмом:
        1*x = 0.9*x + 7.8*1;
        x = 78 (у.е.);
        После удаления лома она поднимется на одну десятую своего объёма — 7.8 у.е.
        А лом вытеснит 1 у.е. Соответствено общий объём водоизмещения упадёт на 6.8. После таяния льда он займёт столько же объёма, сколько занимал в свободном плавании, и 6.8 окончательная величина. Уровень воды упадёт строго на (примем площадь поверхности водоёма за очень условную еденицу) delta_h = -6.8 (у.е./о.у.е.)


        1. aragon_sp
          16.11.2017 16:46

          Мне кажется, что если убрать весь лишний лёд (которій никак не повлияет на уровень), и оставить полностью утопленую «подушку» которой хватает ровно на то чтобы держать лом, то она будет объёмом:

          (7.8/0.9)/(1-0.9)=86.(6)


  1. FlaxAZbest
    15.11.2017 09:59

    Задача 2
    Поджигаем одновременно 1 шнур с обеих концов и второй с одного.
    Когда догорит 1 (пройдет ровно 30 мин) поджигаем второй с другого конца, оставшаяся «половина» сгорит за (30/2 = 15мин) нужное время.


  1. MatMaster
    15.11.2017 14:11

    Аналогично задачи 1.
    Есть бассейн. В нём плавает воздушный шарик. Отмечен текущий уровень воды. Ещё в бассейн забросили якорь. В каком случае уровень воды в бассейне поднимется больше: если якорь связан с шариком, или если якорь НЕ связан с шариком? Длиной связи пренебречь.


  1. Mateorus
    15.11.2017 14:11

    Задача 2
    Поджигаем первый шнур с обеих концов. Когда догорел (прошло 30 мин) второй разрезаем пополам и поджигаем обе части с обеих концов одновременно. Когда сгорел последний из этих двух кусков — прошло 15 минут. Итого 45. П.С. Но это неточно)


  1. fareloz
    15.11.2017 16:29

    у меня в школе была задачка наподобие первой: что тяжелее: килограмм пуха или килограмм железных прутьев


  1. deltaivan
    16.11.2017 11:34

    Про шнуры. Поджигаем один шнур с обоих концов и одновременно второй шнур с одного конца. Когда встретятся огоньки на первом это 30 мин. В этот момент поджигаем второй шнур со второго конца. Когда встретятся огоньки на нем это будет еще 15 мин) милая задачка


  1. rammount
    17.11.2017 11:14

    Есть мост, выдерживающий не более двух человек одновременно. По мосту можно идти, только держа в руке фонарик. На одной стороне моста стоят 4 человека с одним фонариком. Скорость движения у людей разная: 1 минута на переход, 2 минуты на переход, 5 минут на переход, 10 минут на переход. За какое минимальное время люди перейдут на другую сторону моста?


    1. Nick_mentat
      17.11.2017 11:23