Благодаря сообществу PPCG Санта теперь сбалансировал свои тележки для хранения. Теперь ему нужно переместить их в транспортные доки, чтобы их можно было отправлять на погрузочные площадки. К сожалению, дорожки для перемещения тележек - беспорядок, и он должен выяснить, как обойти их без крушения вместе!
Вызов
Вам дадут дорожки для каждой из тележек в виде списков «меток» (или станций). Тележки должны быть перемещены так, чтобы в любой момент времени на одной этикетке / станции не было двух тележек. По сути, тележки перемещаются между позициями, каждая из которых имеет уникальный ярлык.
задача
С учетом дорожек для каждой тележки в виде списка списков меток (все они являются положительными целыми числами), определите, когда каждая корзина должна быть выпущена, чтобы безопасно отправлять все тележки в места назначения в кратчайшие сроки.
Вот объяснение того, как работает вся система треков. Допустим, корзина i
выпущена вовремя t_i
на дорожку с ярлыками T_i_1, T_i_2, ..., T_i_n
. Затем, во время t_1
To t_i-1
, телега i
не на сетке и может быть проигнорирована.
В определенные периоды времени t_i
корзина находится на этикетке T_i_1
, а для каждого периода времени t_k
от ( t_i
до t_i+n
половины включительно) корзина находится на этикетке T_i_k+1
.
Для всех периодов времени после и после t_i+n
, корзина находится в пункте назначения и больше не находится в сетке.
Общее количество времени, которое t_T
потребовалось, является последним периодом времени, когда корзина все еще находится на дорожке в системе.
Характеристики
При наличии системы отслеживания верните список временных интервалов, в которые [t_1, t_2, ..., t_n]
эта i
корзина начинается в определенное время t_i
, так что никакое другое устройство не позволило бы тележкам безопасно добраться до пунктов назначения с меньшим общим количеством времени.
С точки зрения «безопасно», если в любой момент времени кадр из t_1
к t_T
есть более чем одна тележка на любой ярлык, то они сталкиваются и расположение не было «безопасным». Обратите внимание , что две тележки могут перейти от a, b
к b, a
и все еще быть «безопасным» , потому что дорожки 2-полосная.
Спецификации форматирования
Ввод будет дан как матрица положительных целых чисел в любом разумном формате. Выходные данные должны быть представлены в виде списка натуральных чисел в любом приемлемом формате. Вы можете выдавать выходные данные с нулевыми индексами, поэтому выходные данные будут представлять собой список неотрицательных целых чисел в любом приемлемом формате.
правила
- Применяются стандартные лазейки
- Это код-гольф, поэтому выигрывает самый короткий ответ в байтах
- Ответ не будет принят
Тестовые случаи
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]
Примечание: я черпал вдохновение для этой серии испытаний из Advent Of Code . У меня нет связи с этим сайтом
Вы можете увидеть список всех испытаний в серии, посмотрев раздел «Связанные» первого испытания здесь .
Счастливого гольфа!
источник
Ответы:
JavaScript (ES7), 172 байта
Возвращает массив 0-индексированных таймфреймов.
NB : Это может работать только с метками в [0-31]. Это предел JS, а не предел алгоритма.
Контрольные примеры
Показать фрагмент кода
комментарии
источник
<<
и|
) Это можно исправить, используя вместо этого массив bool ...o[]
. (Это могло бы быть сделано по-другому, но я выбрал этот метод для результатов в первую очередь.)