Ребята с резким взором ASCII любят сдвигать ASCII Ii
:
>_> <_< >_< <_>
При заданной цепочке смещенных парней, разнесенных или разделенных линиями, переместите Ii
сторону в сторону, влево от стены и справа от неба:
Ii
Самый короткий оборотень выигрывает приз.
Чего-чего?
Напишите программу или функцию, которая принимает строку произвольного списка этих четырех смайликов ASCII, разделенных пробелом или переводом новой строки (с дополнительным завершающим переводом строки):
>_>
<_<
>_<
<_>
Например, вход может быть
>_> >_> <_>
или же
>_> >_> <_>
(Метод, который вы поддерживаете, зависит от вас.)
Каждый смайлик выполняет различные действия на I
и i
символах, которые всегда начинаются так:
Ii
>_>
сдвигI
вправо на единицу, если это возможно, а затем сдвигi
вправо на единицу.<_<
сдвигI
влево на единицу, если это возможно, и затем сдвигi
влево на единицу, если это возможно.>_<
сдвигI
вправо на единицу, если это возможно, а затем сдвигi
влево на единицу, если это возможно.<_>
сдвигI
влево на единицу, если это возможно, а затем сдвигi
вправо на единицу.
I
не может быть смещено влево, если оно находится на левом краю линии (как это изначально), и не может быть смещено вправо, если оно i
находится прямо вправо (как это изначально).
i
не может быть смещено влево, если I
находится прямо слева от него (как это изначально), но всегда может быть смещено вправо.
Обратите внимание, что с этими правилами I
всегда будет слева от i
, и I
попытка быть сдвинуты раньше i
для всех смайликов.
Ваша программа или функция должна напечатать или вернуть строку последней Ii
строки после применения всех сдвигов в указанном порядке с использованием пробелов (
) или периодов ( .
) для пустого пространства. Завершающие пробелы или периоды и одиночный завершающий перевод строки необязательно разрешены в выходных данных. Не смешивайте пробелы и точки.
Например, вход
>_> >_> <_>
имеет выход
I...i
потому что сдвиги применяются как
start |Ii >_> |I.i >_> |.I.i <_> |I...i
Самый короткий код в байтах побеждает. Ответ Tiebreaker выше.
Тестовые случаи
#[id number]
[space separated input]
[output]
Используем .
для наглядности.
#0
[empty string]
Ii
#1
>_>
I.i
#2
<_<
Ii
#3
>_<
Ii
#4
<_>
I.i
#5
>_> >_>
.I.i
#6
>_> <_<
Ii
#7
>_> >_<
.Ii
#8
>_> <_>
I..i
#9
<_< >_>
I.i
#10
<_< <_<
Ii
#11
<_< >_<
Ii
#12
<_< <_>
I.i
#13
>_< >_>
I.i
#14
>_< <_<
Ii
#15
>_< >_<
Ii
#16
>_< <_>
I.i
#17
<_> >_>
.I.i
#18
<_> <_<
Ii
#19
<_> >_<
.Ii
#20
<_> <_>
I..i
#21
>_> >_> <_>
I...i
#22
<_> >_> >_> >_> <_> <_<
.I...i
#23
<_> >_> >_> >_> <_> <_< >_< <_< >_<
..Ii
#24
>_> >_< >_> >_> >_> >_> >_> >_> <_> <_> <_<
...I.....i