опис проблеми
Всі ми любимо Twix (тому що це найкраща цукерка), але це перший Хеллоуїн для дітей --- ми повинні захопити принаймні один із них для кожного типу цукерок. Кожного Хеллоуїна всі мешканці проспекту Numberline надсилають електронний лист із повідомленням, які види цукерок вони будуть дарувати цього року.
Ой! І ми живемо в 1D світі.
Будучи надзвичайно ледачим в деяких аспектах, а не в інших, ми склали карту будинків, надаючи їх положення вздовж вулиці. Ми також відзначили види цукерок, які вони мають. Ось карта, яку ми зробили за цей рік:
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
Для маленьких ніжок дітей нам потрібно знайти найкоротшу прогулянку, починаючи з будь-якого будинку в околицях, щоб зібрати хоча б одну з усіх цукерок.
Приклади
На прохання декількох користувачів (включаючи Shaggy) я розкажу кілька прикладних прикладів Сподіваємось, це все прояснить. :) Вхід:
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
Вихід:
[1, 2, 3]
Ще одна карта та рішення ...
Вхід:
[(-3, {"KitKats", "Twix"}),
(-1, {"Hundred Grands"}),
(3, {"Kisses"}),
(12, {"Hundred Grands", "Twix", "KitKats"})]
Вихід :
[0, 1, 2]
Ми могли б почати в координатному 9 будинку збирати цукерки до будинків 6 та 1. Це заповнює квоту цукерок, пройшовши 8 одиниць, але чи це найкоротше рішення?
Правила
Записи повинні взяти аналогічно структурований єдиний аргумент до прикладу та вивести індекси будинків для відвідування у найкоротшому рішенні.
Застосовуються типові правила гольфу: найкоротше правильне рішення в байтах!
PS Це питання про інтерв'ю, яке мені дала одна з найбільших світових технологічних компаній. Якщо вам не подобається гольф, спробуйте знайти рішення часу (O * k)), де k - кількість типів цукерок, а n - кількість будинків.
Редагувати
Як зазначав Джонатан Аллан, існує певна плутанина навколо того, що означає "індекси" в даному випадку. Ми хочемо вивести позиції будинків у списку аргументів, а не їх координати на смузі.