Grazie alla comunità PPCG, Babbo Natale ora ha bilanciato i suoi carrelli di stoccaggio. Ora, ha bisogno di spostarli nei moli di trasporto in modo che possano essere inviati alle baie di carico. Sfortunatamente, i binari per spostare i carrelli sono un casino, e ha bisogno di capire come farli girare senza che si rompano insieme!
Sfida
Ti verranno dati i brani per ciascuno dei carrelli come elenchi di "etichette" (o stazioni). I carrelli devono essere spostati in modo tale che, in qualsiasi momento, non vi siano due carrelli sulla stessa etichetta / stazione. In sostanza, i carrelli si spostano tra le posizioni che hanno ciascuna un'etichetta unica.
Compito
Considerando le tracce per ciascuno dei carrelli come un elenco di elenchi di etichette (che sono tutti numeri interi positivi), determinare quando ogni carrello deve essere rilasciato per inviare tutti i carrelli alle loro destinazioni in sicurezza nel più breve tempo possibile.
Ecco una spiegazione di come funziona l'intero sistema di binari. Supponiamo che il carrello i
venga rilasciato in un momento t_i
su una traccia con etichette T_i_1, T_i_2, ..., T_i_n
. Quindi, durante t_1
a t_i-1
, il carrello i
non è sulla griglia e può essere ignorato.
In un intervallo di tempo t_i
, il carrello si trova sull'etichetta T_i_1
e per ogni intervallo di tempo compreso t_k
tra (metà compreso), il carrello si trova sull'etichetta .t_i
t_i+n
T_i_k+1
Per tutti i tempi successivi e successivi t_i+n
, il carrello è a destinazione e non è più sulla griglia.
Il tempo totale t_T
impiegato è l'ultimo intervallo di tempo con un carrello ancora su una traccia nel sistema.
specificazioni
Dato un sistema di binari, restituisci un elenco di intervalli di tempo in [t_1, t_2, ..., t_n]
cui il i
carrello inizia in quel momento t_i
, in modo tale che nessun altro accordo consentirebbe ai carrelli di raggiungere le loro destinazioni in sicurezza con un tempo totale inferiore.
In termini di "sicurezza", se in qualsiasi momento da un cartellone t_1
all'altro t_T
si trova più di un carrello su qualsiasi etichetta, allora si scontrano e la disposizione non è "sicura". Nota che due carrelli possono passare da a, b
a b, a
ed essere ancora "sicuro", perché le piste sono a 2 vie.
Specifiche di formattazione
L'input verrà dato come una matrice di numeri interi positivi in qualsiasi formato ragionevole. L'output deve essere fornito come un elenco di numeri interi positivi in qualsiasi formato ragionevole. È possibile fornire un output in intervalli di tempo a zero, quindi l'output sarà un elenco di numeri interi non negativi in qualsiasi formato ragionevole.
Regole
- Si applicano scappatoie standard
- Questo è un code-golf quindi vince la risposta più breve in byte
- Nessuna risposta sarà accettata
Casi test
Input -> Output
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] -> [1, 1, 1]
[[1, 2, 3], [1, 2, 3]] -> [1, 2]
[[1, 2, 3], [3, 2, 1]] -> [1, 2]
[[1, 2, 3, 4], [4, 3, 2, 1]] -> [1, 1]
[[1, 1, 1], [1, 1, 1]] -> [1, 4]
[[1, 2, 3, 4], [2, 4, 3, 1]] -> [2, 1]
[[1, 2, 3, 4, 5, 6, 7], [2, 3, 3, 4], [5, 4, 3]] -> [1, 3, 4]
[[1, 2, 3, 4, 4], [1, 2, 3, 5, 4], [1, 2, 3, 4, 5]] -> [2, 3, 1]
Nota: ho tratto ispirazione per questa serie di sfide da Advent Of Code . Non ho alcuna affiliazione con questo sito
Puoi vedere un elenco di tutte le sfide della serie guardando la sezione "Linked" della prima sfida qui .
Buon golf!