A los chicos ASCII de ojos temblorosos les gusta cambiar de ASCII Ii
:
>_> <_< >_< <_>
Dada una cadena de personas cambiantes, separadas o líneas separadas, desplace el Ii
lado a lado, deje la pared y los cielos a la derecha:
Ii
La palanca de cambio más corta gana el premio.
¿Que qué?
Escriba un programa o función que incluya una cadena de una lista arbitraria de estos cuatro emoticones ASCII, separados por espacio o por nueva línea (con una nueva línea final opcional):
>_>
<_<
>_<
<_>
Por ejemplo, la entrada podría ser
>_> >_> <_>
o
>_> >_> <_>
(El método que admite depende de usted).
Cada emoticón realiza una acción diferente en los caracteres I
y i
, que siempre comienzan así:
Ii
>_>
se desplazaI
hacia la derecha por uno, si es posible, y luego se desplazai
hacia la derecha por uno.<_<
se desplazaI
hacia la izquierda por uno, si es posible, y luego se desplazai
hacia la izquierda por uno, si es posible.>_<
se desplazaI
hacia la derecha por uno, si es posible, y luego se desplazai
hacia la izquierda por uno, si es posible.<_>
se desplazaI
hacia la izquierda por uno, si es posible, y luego se desplazai
hacia la derecha por uno.
I
no puede desplazarse a la izquierda si está en el borde izquierdo de la línea (como está inicialmente), y no puede desplazarse a la derecha si i
está directamente a su derecha (como está inicialmente).
i
no se puede desplazar hacia la izquierda si I
está directamente a su izquierda (como es inicialmente), pero siempre se puede desplazar hacia la derecha.
Tenga en cuenta que con estas reglas, I
siempre permanecerá a la izquierda de i
, y I
se intenta cambiar antes i
para todos los emoticones.
Su programa o función necesita imprimir o devolver una cadena de la Ii
línea final después de aplicar todos los cambios en el orden dado, usando espacios (
) o puntos ( .
) para el espacio vacío. Los espacios o puntos finales y una nueva línea final opcional se permiten opcionalmente en la salida. No mezcle espacios y períodos.
Por ejemplo, la entrada
>_> >_> <_>
tiene salida
I...i
porque los turnos se aplican como
start |Ii >_> |I.i >_> |.I.i <_> |I...i
El código más corto en bytes gana. Tiebreaker es la respuesta más votada.
Casos de prueba
#[id number]
[space separated input]
[output]
Utilizando .
para mayor claridad.
#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