Descrizione del problema
Adoriamo tutti un Twix (perché è la migliore caramella), ma questo è il primo Halloween dei bambini --- dobbiamo prendere almeno uno di ogni tipo di caramella per loro. Ogni Halloween tutti i residenti di Numberline avenue inviano un'e-mail che dice quali tipi di caramelle regaleranno quest'anno.
Oh! E viviamo in un mondo 1D.
Essendo eccezionalmente pigri in alcuni modi e non in altri, abbiamo creato una mappa delle case che ne indicano la posizione lungo la strada. Abbiamo anche notato i tipi di caramelle che hanno. Ecco la mappa che abbiamo realizzato per quest'anno:
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
Per il bene delle zampe dei bambini, dobbiamo trovare la passeggiata più breve che inizia in qualsiasi casa del quartiere per raccogliere almeno uno di ogni tipo di caramella.
Esempi
Su richiesta di un paio di utenti (incluso Shaggy), lancerò alcuni esempi funzionanti. Spero che questo chiarisca le cose. :) Ingresso:
[(-2, {"Kisses", "KitKats"}),
(1, {"KitKats", "Peanut Butter Cups"}),
(6, {"Kisses", "Twix"}),
(9, {"Skittles"}),
(10, {"Twix"})]
Produzione:
[1, 2, 3]
Un'altra mappa e soluzione ...
Ingresso:
[(-3, {"KitKats", "Twix"}),
(-1, {"Hundred Grands"}),
(3, {"Kisses"}),
(12, {"Hundred Grands", "Twix", "KitKats"})]
Uscita :
[0, 1, 2]
Potremmo iniziare dalla casa coordinata 9 che raccoglie caramelle alle case 6 e 1. Ciò riempie la quota di caramelle camminando per 8 unità, ma è la soluzione più breve?
Regole
Le voci devono contenere un singolo argomento strutturato in modo simile all'esempio e produrre gli indici delle case da visitare nella soluzione più breve.
Si applicano le regole tipiche del codice golf: vince la soluzione corretta più breve in byte!
PS Questa è stata una domanda di intervista che mi è stata data da una delle più grandi aziende tecnologiche del mondo. Se non ti piace il golf, prova a trovare una soluzione temporale O (k * n) in cui k è il numero di tipi di caramelle e n è il numero di case.
modificare
Come ha sottolineato Jonathon Allan, esiste una certa confusione sul significato degli "indici" in questo caso. Vogliamo produrre le posizioni delle case nell'elenco degli argomenti e non le loro coordinate sulla corsia.