Descrição do Problema
Todos nós amamos um Twix (porque é o melhor doce), mas este é o primeiro Halloween das crianças - precisamos pegar pelo menos um de cada tipo de doce para eles. Todo Dia das Bruxas, todos os moradores da avenida Numberline enviam um e-mail dizendo que tipos de doces eles distribuirão este ano.
Oh! E nós vivemos em um mundo 1D.
Sendo excepcionalmente preguiçosos em alguns aspectos e não em outros, fizemos um mapa das casas dando suas posições ao longo da rua. Também observamos os tipos de doces que eles têm. Aqui está o mapa que fizemos para este ano:
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
Para o bem das perninhas das crianças, precisamos encontrar a caminhada mais curta, começando em qualquer casa do bairro, para reunir pelo menos um de cada tipo de doce.
Exemplos
A pedido de alguns usuários (incluindo Shaggy), apresentarei alguns exemplos trabalhados. Espero que isso esclareça as coisas. :) Entrada:
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
Resultado:
[1, 2, 3]
Outro mapa e solução ...
Entrada:
[(-3, {"KitKats", "Twix"}),
(-1, {"Hundred Grands"}),
(3, {"Kisses"}),
(12, {"Hundred Grands", "Twix", "KitKats"})]
Saída :
[0, 1, 2]
Poderíamos começar na casa coordenada 9, coletando doces, nas casas 6 e 1. Isso preenche a cota de doces caminhando 8 unidades, mas é a solução mais curta?
Regras
As entradas devem receber um argumento único estruturado da mesma forma que o exemplo e gerar os índices das casas a serem visitadas na solução mais curta.
Aplicam-se regras típicas de golfe com código: a solução correta mais curta em bytes vence!
PS Esta foi uma pergunta de entrevista que me foi dada por uma das maiores empresas de tecnologia do mundo. Se você não gosta de golfe, tente encontrar uma solução de tempo O (k * n) em que k é o número de tipos de doces e n é o número de casas.
Editar
Como Jonathon Allan apontou, existe alguma confusão em torno do que "índices" significa neste caso. Queremos exibir as posições das casas na lista de argumentos e não suas coordenadas na pista.