описание проблемы
Мы все любим твикс (потому что это самая лучшая конфета), но это первый детский праздник Хэллоуина - нам нужно захватить хотя бы одну конфету каждого типа для них. Каждый Хэллоуин все жители Numberline avenue рассылают электронные письма, в которых говорится, какие конфеты они будут разыгрывать в этом году.
Ой! И мы живем в одномерном мире.
Будучи исключительно ленивыми в некоторых отношениях, а не в других, мы составили карту домов, на которых показано их расположение вдоль улицы. Мы также отметили типы конфет, которые они имеют. Вот карта, которую мы сделали на этот год:
[(-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 * n), где k - количество конфет, а n - количество домов.
редактировать
Как отметил Джонатон Аллан, существует некоторая путаница в отношении того, что в данном случае означают «индексы». Мы хотим вывести позиции домов в списке аргументов, а не их координаты на дорожке.