Dzięki społeczności PPCG Święty Mikołaj zbalansował swoje wózki do przechowywania. Teraz musi przenieść je do doków transportowych, aby mogły zostać wysłane do ładowni. Niestety ślady do przemieszczania wózków to bałagan, a on musi wymyślić, jak je wszystkie omijać, nie rozbijając się razem!
Wyzwanie
Otrzymasz ścieżki dla każdego z wózków jako listy „etykiet” (lub stacji). Wózki muszą być przemieszczane w taki sposób, aby w żadnym czasie żadne dwa wózki nie znajdowały się na tej samej etykiecie / stacji. Zasadniczo wózki przemieszczają się między pozycjami, z których każda ma unikalną etykietę.
Zadanie
Biorąc pod uwagę ścieżki dla każdego z wózków jako listę list etykiet (które są dodatnimi liczbami całkowitymi), określ, kiedy każdy wózek powinien zostać zwolniony, aby bezpiecznie wysłać wszystkie wózki do ich miejsc docelowych w możliwie najkrótszym czasie.
Oto wyjaśnienie działania całego systemu gąsienic. Powiedzmy, że koszyk iwypuszczany jest t_ina tor z etykietami T_i_1, T_i_2, ..., T_i_n. Następnie, podczas t_1do t_i-1, wózek inie znajduje się na siatce i można go zignorować.
W ramce czasowej t_iwózek jest na etykiecie T_i_1, a dla każdej ramy czasowej t_kod t_ido t_i+n(w połowie włącznie) wózek jest na etykiecie T_i_k+1.
Dla wszystkich przedziałów czasowych po uwzględnieniu t_i+nkoszyk znajduje się w miejscu docelowym i nie znajduje się już na planszy.
Całkowity czas t_Tzajmuje ostatni przedział czasowy, w którym wózek nadal znajduje się na torze w systemie.
Dane techniczne
Biorąc pod uwagę system torów, zwróć listę przedziałów czasowych, w [t_1, t_2, ..., t_n]których iwózek rozpoczyna się w czasie t_i, tak aby żadne inne ustawienie nie pozwoliło wózkom bezpiecznie dotrzeć do miejsca docelowego przy mniejszym całkowitym czasie.
Jeśli chodzi o „bezpiecznie”, jeśli w dowolnym przedziale czasowym od t_1do t_Twięcej niż jednego wózka na dowolnej etykiecie, kolidują ze sobą, a układ nie był „bezpieczny”. Należy zauważyć, że dwa wózki mogą przejść od a, bcelu b, ai wciąż być „bezpieczne”, bo tory są 2-drożny.
Specyfikacja formatowania
Dane wejściowe będą podawane jako macierz dodatnich liczb całkowitych w dowolnym rozsądnym formacie. Dane wyjściowe należy podać jako listę liczb całkowitych dodatnich w dowolnym rozsądnym formacie. Możesz podać dane wyjściowe w przedziałach czasowych indeksowanych od zera, więc wynikiem będzie lista liczb całkowitych nieujemnych w dowolnym rozsądnym formacie.
Zasady
- Obowiązują standardowe luki
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach
- Żadna odpowiedź nie zostanie zaakceptowana
Przypadki testowe
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]
Uwaga: Inspirację do tej serii wyzwań czerpałem z Advent Of Code . Nie mam powiązań z tą stroną
Możesz zobaczyć listę wszystkich wyzwań w serii, patrząc na sekcję „Połączone” pierwszego wyzwania tutaj .
Wesołego golfa!