6 Нестандартних завдань на співбесіді (з рішеннями), приватна думка

6 Нестандартних завдань на співбесіді (з рішеннями), приватна думка
Періодично інтерв'юери задають різні завдання, слабо пов'язані з вашої майбутньої роботи. Особливо цим грішать у великих компаніях. Саме там, де кожен великий чи маленький начальник думає не про те, що потрібно буде робити працівнику, а про те, як би перевірити одне з його логічних якостей, які, можливо ніколи і не знадобляться в роботі. Хоча багато хто говорить, що цікавить не вирішення цих завдань, які дають на співбесіді, а то, як їх вирішує здобувач.
На співбесіді можуть задати кілька типів завдань, щоб подивитися креативність, широту поглядів і "незашореність" Часто такі завдання не мають єдино правильного рішення і інтерьвьюеру цікавий шлях по якому кандидат йде, наприклад, "Порахуйте скільки заправок в країні". Але є і завдання, які мають рішення. Це як раз на логіку. Тут представлено кілька логічних задач у яких є правильне рішення, потрібно тільки трохи подумати.

Завдання перше: котлети на сковорідці


У вас є три котлети і дві сковороди. Кожна сторона котлети смажиться одну хвилину. На одну сковороду одночасно поміщається лише одна котлета. За який найменший час можна посмажити всі котлети з обох сторін?

Починаємо вирішувати в лоб. Якщо взяти і посмажити дві котлети з двох сторін, то це займе дві хвилини. Знімаємо дві посмажені котлети і кладемо третю. Тоді її доведеться смажити ще дві хвилини. Що в підсумку дає нам чотири хвилини загального часу. Це не зовсім правильно, оскільки можна посмажити ці котлетки всього за три хвилини.

Тепер починаємо думати креативно. У нас є ресурс - дві сковорідки. Вони можуть смажити одночасно. Якщо ми почнемо з двох котлет, то займемо ресурс повністю, однак, половина ресурсу буде простоювати, коли буде смажитися третя. Тобто для скорочення часу потрібно задіяти другу сковорідку, весь час. Як це зробити? У нас є можливість розділити жарку на обсмажування з одного боку і з іншого. Тобто весь час смаження буде 3 котлети помножити на 2 сторони = 6 етапів. Якщо є шість етапів, які займають 6 хвилин і є дві сковорідки на яких ці етапи треба виконати, то виходить, що реально можна посмажити за три хвилини, питання тільки в алгоритмі. Тут і приходить рішення. Після однієї хвилини, коли пожежа перша сторона, потрібно одну котлету, наполовину посмажену, зняти і покласти на її місце сиру. А на третій хвилині, вже посмажену зняти і досмажити залишилася на вільної сковорідці.

Завдання друге: горючі мотузки

Вам дано дві мотузки і коробок з достатньою кількістю сірників. Про кожну з мотузок достовірно відомо, що будучи підпалений вона згорає повністю за одну годину. Необхідно відміряти 15 хвилин. Як це зробити з урахуванням того, що мотузки горять нерівномірно?

Нерівномірність горіння мотузок - це як раз для тих розумників, які вирішили мотузки поділити на чотири частини. Цей варіант не підходить. Тобто не можна просто розрізати мотузку на чотири частини і підпалити, це не буде точним виміром, оскільки час горіння не відповідає довжині. Якась частина мотузки може згоряти швидше, а якась частина - повільніше.

Продовжуємо думати креативно. У нас є одиниця виміру - час горіння мотузки. Це час - 1 година за умовами завдання. Це час ніяк не співвідноситься з довжиною. Але у нас дві мотузки, тому ми можемо якось час горіння однієї мотузки співвіднести з часом горіння інший. А тепер ключ до вирішення завдання. Адже якщо мотузка горить 1 годину, значить її підпалили з одного кінця, отже, якщо її підпалити з двох кінців, то вона точно згорить за 30 хвилин, звичайно буде горіти нерівномірно, але час буде точним. Все, у нас є з чим порівнювати. Підпалюємо першу мотузку з двох сторін, а другу тільки з однієї (щоб засікти час). Перша спокійно горить тридцять хвилин, і коли вона згоріла ми гасимо другу мотузку. Виходить, що у нас залишився шматок мотузки, який повинен згоріти за пів-години (яка довжина-не важливо). Тепер застосовуємо до неї той же метод, що і для першої - підпалюємо з двох сторін і отримуємо п'ятнадцять хвилин горіння.

Завдання третє: кімната з лампочками

Є закрита кімната, де знаходяться три лампочки. Зовні є три вимикача. Необхідно дізнатися яку лампочку включає кожен вимикач, але при цьому можна зайти в кімнату тільки один раз. (Не можна бігати і клацати вимикачами).

Звичайно, як менеджер, можна залучити помічників, але потрібно використовувати іншу точку зору на лампочки і обійтися самому. Починаємо міркувати. Кімната закрита, лампочки зовні не помітні. Якщо включити одну з них, а решта вимкнути, а потім піти подивитися, ми дізнаємося який вимикач управляє палаючої лампочкою. За умовами, ми повинні відразу ж якось розрізнити і інші дві. Якщо вони не горять, то вони абсолютно однакові. Нам потрібно щось придумати, щоб при вході в кімнату відразу було зрозуміла зв'язок між вимикачем і виключеною лампочкою.

Цікавий варіант рішення знайшов на одному з форумів. У нас є два стани горить-не горить і два стану вимикача вкл-викл, при цьому лампочок три. Було б дві, то складнощів - ніяких, одну включили, другу вимкнули і пішли подивилися. Значить одна лампочка повинна бути включена, друга вимкнена, а що робити з третьою? Запропонували до третього вимикача підвести 380 вольт, від яких лампочка перегорає (у ламп розжарювання, добре видна спіраль, якщо вона перегоріла, то це видно). Тобто пропозиція додати ще один стан справна-несправна. Тобто лампочка тепер може бути в трьох станах горить / не горить і справна / не горить і несправна. Поміркувавши над третім станом можна згадати, що коли лампочка включена, вона нагрівається, а якщо її вимкнути, то якийсь час вона залишається теплою, тобто отримуємо поділ не горять лампочок по тепла-холодна. Отже для вирішення завдання включаємо два вимикача на деякий час, потім вимикаємо один і йдемо дивитися. Бачимо одну палаючу лампочку, і дві не горять, одна з яких тепліше інший, що вказує на той вимикач, який тільки що вимкнули.

Завдання четверта: золотий ланцюжок

На заїжджий двір приїхав мандрівник. Грошей у нього з собою не було, але був золотий ланцюжок з шести ланок. Господар заїжджого двору погодився прийняти в оплату кімнати за кожен день по одному колечку з цього ланцюжка, але так щоб розпиляних кілець він отримав не більше одного. Ніхто один одному не довіряє і не хоче платити вперед або заплатити потім, оплата повинна бути щоденною. Як гостю потрібно розпиляти ланцюжок, щоб можна було щодня розплачуватися протягом п'яти днів?

Щоб шість ланок роз'єднати і підсумку залишилося по одному ланці, явно не вийде розпиляти одна ланка, оскільки кілець 6, а з'єднань 5 то щоб їх роз'єднати всі по одному, потрібно як мінімум три розрізу (5/2 округляємо до цілого, виходить 3).

Тут щось не так, починаємо думати креативно. Тут є поняття "оплата", тобто за умовами завдання немає вимоги, щоб постоялець передавав господареві по одному ланці. є вимога, щоб кожен день у господаря ставало більше на одну ланку. Тепер підходимо до самої головної думки, що господар і гість можуть змінюватися, або, наприклад, господар може давати здачу. Тоді все тривіально. Пиляємо одна ланка - третя, щоб була розмінна монета 1, 2 і 3 ланки, і в перший день турист дає господареві одна ланка, в другій змінює своїх два на одне вчорашнє, в третій день може поміняти два на три і т.д. Кожен день у господаря на одну ланку більше.

Завдання п'ята: зважування
Є вісім монет, сім з яких важать однаково, а одна трохи менше (фальшива, але без терезів не визначити). Є ваги з двома чашками, але немає гир. Необхідно за мінімальне число зважувань знайти фальшиву.

Починаємо з першого-ліпшого алгоритму. Беремо перші дві монети і кладемо на протилежні шальки терезів, якщо одна легше, то фальшивка знайдена, якщо вага однаковий, то беремо наступну пару. Проблема в тому, що пар у нас чотири тобто в самому невдалому випадку, нам знадобиться чотири зважування. Програмісти, прочитавши це рішення, повинні були хитро посміхнутися і сказати, "але є ж двійковий пошук, зовсім не обов'язково зважувати всі пари".
Для тих, хто далекий від програмування ось приклад двійкового пошуку: Щоб зловити лева в пустелі потрібно поділити пустелю навпіл, подивитися в якій половині лев, потім поділити цю половину навпіл, а потім ще навпіл, до тих пір поки лев не опиниться в клітці. Тепер ділимо наші вісім монет навпіл, кладемо по чотири монети з кожного боку терезів. Монети з тієї сторони, яка важче прибираємо (там немає фальшивки) і ділимо залишилися навпіл, виходить по дві на кожну сторону, тепер залишилося всього дві монети для останнього зважування. У підсумку ми отримали три зважування. Ура! ми перемогли! І тут для програмістів - холодний душ. Виявляється можна вирішити задачу за все за два зважування. Доведеться думати ...

Швидше, ніж двійковий пошук ще нічого не придумали, тобто скоротити кількість зважувань можна тільки відмовившись від зважування. Проблемка. Але рішення все-таки є. А якщо зважувати не всі монети, а поділити по три, а дві відкласти? Тоді в разі, якщо при першому зважуванні буде однакову вагу, то другим зважуванням відкладених двох монет, знаходимо потрібну. Якщо ж вага при першому зважуванні не однаковий, то беремо ті три монетки, які на легкій стороні, відкладаємо одну і зважуємо дві що залишилися. Якщо вага різний, то монета знайдена, якщо вага однаковий, то решта монета і є фальшивка.

Завдання шоста: як розділити торт

Необхідно розділити круглий торт на на вісім рівних частин трьома розрізами.

Ось тут відразу можна поставити людину в глухий кут, адже на перший погляд потрібно чотири розрізи, адже частин 8. Але якщо подивитися на це креативніше ...

Рішення просте, і можна дати як мінімум два. Для початку зрозуміємо, що реально розрізати один торт на вісім рівних частин трьома розрізами не можна, принаймні так, як ми це собі уявляємо: відкрили коробку з тортом і почали різати. Так не піде, для восьми частин, потрібно чотири розрізи. Але їх можна скоротити, якщо уявити собі торт не як плоский коло, а залучити просторове мислення. Спочатку робимо два розрізи хрест на хрест, отримуємо чотири шматки. Тепер потрібно придумати, як за один раз порізати всі чотири шматка рівно навпіл. Якщо згадати, що ніхто не обмежує нас в перестановці вже відрізаних шматків, то просто складаємо шматки стопкою і ріжемо все разом - це перший варіант. А якщо все-таки згадати, що торт має певну товщину, то останній розріз робимо не зверху як перші два, а поперек всіх шматків посередині торта, відокремлюючи верх від низу, але так, щоб було рівно. Правда в цьому випадку половина гостей отримає шматок без глазурі, але заради науки чимось потрібно жертвувати.