Учитывая два параметра полосы движения и длины дороги , выведите ASCII-представление разметки полосы движения для службы дорог и дорожного движения, чтобы раскрасить дороги.
Пример ввода / вывода
Вход: BTHMLRPHU
21
Мне все равно, если вы берете два параметра или объединяете число в конце строки, это однозначно.
Входные данные могут быть взяты из STDIN, как аргумент функции, переменные окружения, все, что имеет смысл в вашем языке.
Выход:
! | x ## | | x x !
! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x !
! B | \/ x HOV3 ## | | | | ^^ x HOV3 x !
! | x ## | | x x !
! | x ## | | x x !
! | | ## | | | | !
! | | ## | | | | !
! | | ## | | | | !
! B | /\ | HOV3 ## <- | -> | ^^ | HOV3 | !
! B | \/ | HOV3 ## | | | | ^^ | HOV3 | !
! | x ## | | x x !
! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x !
! B | \/ x HOV3 ## | | | | ^^ x HOV3 x !
! | x ## | | x x !
! | x ## | | x x !
! | | ## | | | | !
! | | ## | | | | !
! | | ## | | | | !
! B | /\ | HOV3 ## <- | -> | ^^ | HOV3 | !
! B | \/ | HOV3 ## | | | | ^^ | HOV3 | !
! | x ## | | x x !
Каждый символ обозначает 0,5 метра в ширину и один километр в длину.
Спецификация
Лейн разметка
На каждые 10 км отрезка дороги разметка наносится на километрах 2, 3, 9 и 10 (от «верха» выхода). Маркировка сосредоточена в переулке. За исключением велосипедной дорожки и медианы, все дорожки имеют ширину 3 метра (6 знаков).
ASCII алмазов и стрелка символов не допускается вместо маркировки , как указано в примере вывода.
B
: Велосипедная дорожка.B
маркировка. 1,5 метра (3 символа) в ширину.T
: Транзит. Алмазная маркировкаH
: Переулок с большой вместимостью.HOV3
маркировкаL
иR
: поворотная полоса. Маркировка стрелокP
Проходная полоса. Каретная маркировкаU
: Неограниченный переулок. Нет маркировки
Разделители (в порядке приоритета)
- Медиана:
##
(обозначаетсяM
во входной строке, заменяет любой другой разделитель, включая канаву) - Кювет (крайний левый и крайний правый):
!
восклицательный знак - HOV полосы чередуются между
x
и|
каждые 5 км - Обычный:
|
Ограничения
Ваша функция или программа должна:
- Печать в STDOUT (это означает эквиваленты
System.out.print
для Java,console.log
для JavaScript и т. Д.) - Уметь печатать 1 - 9 дорожек с 0 - 10 медианами
- Уметь печатать до 50 км проезжей части (50 строк выхода)
- Не используйте какие-либо стандартные лазейки
- Конечный пробел недопустим, за исключением необязательного
\n
в конце вывода
Максимально возможный вывод: 3700 байт (74 символа * 50 строк).
Наименьший возможный вывод: 5 байтов (с входом B
, 1)
Предположения
- Нет смежных медиан (подстрока
MM
не встречается) - Вторая линия маркировки может быть обрезана (например, если длина составляет 9 или 12 км)
- Дорожки могут не иметь логического смысла (возможен любой порядок, например, полоса поворота направо слева от дороги)
Это код-гольф , поэтому выигрывает самый короткий код (в байтах)!