Grâce à la communauté PPCG, le Père Noël a maintenant équilibré ses chariots de stockage. Maintenant, il doit les déplacer dans les quais de transport afin qu'ils puissent être envoyés aux quais de chargement. Malheureusement, les pistes pour déplacer les chariots sont un gâchis, et il doit trouver comment les faire circuler sans les écraser ensemble!
Défi
Vous recevrez les pistes pour chacun des chariots sous forme de listes de "labels" (ou stations). Les chariots doivent être déplacés de telle sorte qu'à tout moment, deux chariots ne soient pas sur la même étiquette / station. Essentiellement, les chariots se déplacent entre des positions qui ont chacune une étiquette unique.
Tâche
Étant donné les pistes pour chacun des chariots sous forme de liste de listes d'étiquettes (qui sont toutes des entiers positifs), déterminez quand chaque chariot doit être libéré afin d'envoyer tous les chariots vers leurs destinations en toute sécurité dans les plus brefs délais.
Voici une explication du fonctionnement de l'ensemble du système de chenilles. Disons que le panier i
est libéré à temps t_i
sur une piste avec des étiquettes T_i_1, T_i_2, ..., T_i_n
. Ensuite, pendant t_1
le t_i-1
, le chariot i
n'est pas sur la grille et peut être ignoré.
À la période t_i
, le chariot est sur l'étiquette T_i_1
et pour chaque période t_k
de t_i
à t_i+n
(demi-inclus), le panier est sur l'étiquette T_i_k+1
.
Pour tous les délais après et y compris t_i+n
, le chariot est à sa destination et n'est plus sur la grille.
Le temps total t_T
pris est le dernier laps de temps avec un chariot toujours sur une piste dans le système.
Caractéristiques
Étant donné un système de suivi, renvoyez une liste de délais [t_1, t_2, ..., t_n]
où le i
chariot commence à l'heure t_i
, de sorte qu'aucun autre arrangement ne permettrait aux chariots de se rendre en toute sécurité à leurs destinations avec un temps total moindre.
En termes de "sécurité", si à tout moment de t_1
à t_T
il y a plus d'un chariot sur une étiquette, ils entrent en collision et l'arrangement n'est pas "sûr". Notez que deux chariots peuvent se déplacer d' a, b
à b, a
et être encore « sûr » parce que les pistes sont à 2 voies.
Spécifications de formatage
L'entrée sera donnée sous la forme d'une matrice d'entiers positifs dans n'importe quel format raisonnable. La sortie doit être donnée sous la forme d'une liste d'entiers positifs dans n'importe quel format raisonnable. Vous pouvez donner une sortie dans des intervalles de temps indexés zéro, donc la sortie serait une liste d'entiers non négatifs dans n'importe quel format raisonnable.
Règles
- Les échappatoires standard s'appliquent
- Ceci est un code-golf donc la réponse la plus courte en octets gagne
- Aucune réponse ne sera acceptée
Cas de 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]
Remarque: je me suis inspiré de cette série de défis d' Advent Of Code . Je n'ai aucune affiliation avec ce site
Vous pouvez voir une liste de tous les défis de la série en consultant la section 'Linked' du premier défi ici .
Bon golf!
la source
Réponses:
JavaScript (ES7), 172 octets
Renvoie un tableau de périodes de temps indexées sur 0.
NB : Cela ne peut fonctionner qu'avec des étiquettes en [0-31]. Il s'agit d'une limite JS, pas d'une limite de l'algorithme.
Cas de test
Afficher l'extrait de code
Commenté
la source
<<
et|
) Cela peut être corrigé en utilisant un tableau de booléens à la place ...o[]
. (Cela pourrait être fait différemment, mais j'ai choisi cette méthode pour les résultats des golfeurs en premier lieu.)