Введение
У меня есть несколько машин ASCII, которые имеют скорость и направление. Их скорость представлена их числом. Если машина <>
то остановилась. Например:
<>
1>
2>
3>
Через одну секунду я получаю
<>
1>
2>
3>
После двух я получаю
<>
1>
2>
3>
Если две машины находятся слишком близко, они разбиваются.
1> <1
1> <2
Через секунду это становится
###
##
Если две машины пересекаются, они становятся хэштегами, где бы они ни были.
Если один автомобиль достаточно быстр, чтобы «перепрыгнуть» через другой, это не приведет к аварии.
3><1 2><1 4><>
становится
<13> ### <>4>
Если автомобиль выходит за пределы экрана, он исчезает (если не происходит сбой). У машины нет возможности сразу выйти за пределы экрана.
<11>
<1 1>
1 1>
1>
Вызов
Основываясь на данной физике автомобиля, вы должны создать программу, которая может шагать на одну секунду в будущее. На входе будут автомобили с пробелами и максимальной скоростью 5 (соответствует регулярному выражению (<[1-5]|[1-5]>|<>| )+
). Симуляция будет происходить в одну строку, однако эта линия не имеет фиксированного размера.
Контрольные примеры
<> 1> 2> 3> 4> 5>
<> 1> 2> 3> 4> 5>
1><1 1> <1 1> <1
## ### 1><1
2><2 2> <2 2> <2 2> <2 2> <2
<22> ### ## ### 2><2
<22> <1 3> <2
### ##
<><> 1><> 2><> 3><> 4><> 5><>
<><> ### ## ### <>4> <> 5>
<><1 <2 <3 <4 <5
###<2<3<4<5
счет
Это Код-гольфтак что код с наименьшим количеством байтов выигрывает!
источник
<>
Ответы:
JavaScript (ES6), 140 байт
Попробуйте онлайн!
комментарии
источник
JavaScript (Node.js) , 259 байт
254 до 259, потому что я добавил тестовый пример, который не был в тестовых случаях, которые усложнили мой результат поиска регулярных выражений
Попробуйте онлайн!
источник
Сетчатка , 178 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Объяснение:
Обработайте случай, когда автомобиль движется влево.
Временно дополните цифры автомобилей, движущихся влево.
Поместите каждую машину в отдельную строку (
$.`* $&¶
) и добавьте отступ в зависимости от скорости машины; Автомобили с левым движением получают дополнительную скорость, в то время как автомобили с неподвижным движением получают на 5 больше скорости.Не дополняйте левосторонние автомобильные цифры.
Переместите все автомобили 5 влево. Это исправляет отступ для всех автомобилей.
Удалите все автомобили, которые сдвинулись налево.
Сортировка оставшихся автомобилей в обратном горизонтальном порядке.
Повторяйте оставшиеся этапы, пока все машины не будут обработаны.
Пока следующая машина не разбится, добавьте ее в результат.
Добавьте разбившийся автомобиль к результату.
источник