Graças à comunidade PPCG, o Papai Noel agora equilibra seus carrinhos de armazenamento. Agora, ele precisa movê-los para as docas de transporte, para que possam ser enviados para os compartimentos de carregamento. Infelizmente, as faixas para mover os carros são uma bagunça, e ele precisa descobrir como contorná-los sem baterem juntos!
Desafio
Você receberá as faixas de cada carrinho como lista de "etiquetas" (ou estações). Os carros devem ser movidos de forma que, a qualquer momento, não haja dois carros na mesma etiqueta / estação. Essencialmente, os carrinhos se movem entre as posições em que cada uma possui um rótulo exclusivo.
Tarefa
Dadas as faixas de cada um dos carrinhos como uma lista de listas de rótulos (todos inteiros positivos), determine quando cada carrinho deve ser liberado para enviar todos os carrinhos para seus destinos com segurança no menor tempo possível.
Aqui está uma explicação de como todo o sistema de pistas funciona. Digamos que o carrinho i
seja liberado às vezes t_i
em uma faixa com etiquetas T_i_1, T_i_2, ..., T_i_n
. Em seguida, durante t_1
a t_i-1
, o carrinho i
não está na grade e pode ser ignorado.
No período de tempo t_i
, o carro está no rótulo T_i_1
, e para cada período de tempo t_k
a partir t_i
de t_i+n
(meia-inclusive), o carrinho está na etiqueta T_i_k+1
.
Para todos os períodos após e inclusive t_i+n
, o carrinho está no seu destino e não está mais na grade.
O tempo total t_T
gasto é o último período de tempo com um carrinho ainda em uma faixa no sistema.
Especificações
Dado um sistema de trilhos, retorne uma lista de prazos em [t_1, t_2, ..., t_n]
que o i
carro é iniciado no horário t_i
, de forma que nenhum outro arranjo permita que os carros cheguem com segurança aos seus destinos com uma quantidade total de tempo menor.
Em termos de "segurança", se em qualquer período de tempo a partir t_1
de t_T
lá é mais do que um carrinho em qualquer rótulo, então eles colidem e o arranjo não era "seguro". Note-se que dois carros podem passar de a, b
a b, a
e ainda ser "seguro" porque as faixas são 2-way.
Especificações de formatação
A entrada será fornecida como uma matriz de números inteiros positivos em qualquer formato razoável. A saída deve ser fornecida como uma lista de números inteiros positivos em qualquer formato razoável. Você pode fornecer resultados em períodos de tempo indexados a zero, para que o resultado seja uma lista de números inteiros não negativos em qualquer formato razoável.
Regras
- As brechas padrão se aplicam
- Este é um código-golfe, então a resposta mais curta em bytes vence
- Nenhuma resposta será aceita
Casos de teste
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: Eu me inspirei para esta série de desafios da Advent Of Code . Não tenho afiliação com este site
Você pode ver uma lista de todos os desafios da série consultando a seção 'Vinculado' do primeiro desafio aqui .
Golfe feliz!