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 ivenga rilasciato in un momento t_isu una traccia con etichette T_i_1, T_i_2, ..., T_i_n. Quindi, durante t_1a t_i-1, il carrello inon è sulla griglia e può essere ignorato.
In un intervallo di tempo t_i, il carrello si trova sull'etichetta T_i_1e per ogni intervallo di tempo compreso t_ktra (metà compreso), il carrello si trova sull'etichetta .t_it_i+nT_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_Timpiegato è 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 icarrello 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_1all'altro t_Tsi trova più di un carrello su qualsiasi etichetta, allora si scontrano e la disposizione non è "sicura". Nota che due carrelli possono passare da a, ba b, aed 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!