Os caras ASCII de olhos esquisitos gostam de trocar de ASCII Ii
:
>_> <_< >_< <_>
Dada uma série de caras safados, espaçados ou linhas separadas, mude o Ii
lado para o outro, deixou a parede e endireitou o céu:
Ii
O menor shifter ganha o prêmio.
Diga o quê?
Escreva um programa ou função que inclua uma sequência de uma lista arbitrária desses quatro emoticons ASCII, separados por espaço ou nova linha (com uma nova linha opcional à direita):
>_>
<_<
>_<
<_>
Por exemplo, a entrada pode ser
>_> >_> <_>
ou
>_> >_> <_>
(O método que você apoia depende de você.)
Cada emoticon executa uma ação diferente nos caracteres I
e i
, que sempre começam assim:
Ii
>_>
desloca-seI
para a direita em um, se possível, e desloca-sei
para a direita em um.<_<
deslocaI
para a esquerda em um, se possível, e deslocai
para a esquerda em um, se possível.>_<
deslocaI
para a direita em um, se possível, e deslocai
para a esquerda em um, se possível.<_>
mudaI
para a esquerda em um, se possível, e depoisi
para a direita em um.
I
não pode ser deslocado para a esquerda se estiver na borda esquerda da linha (como está inicialmente) e não pode ser deslocado para a direita se i
estiver diretamente à sua direita (como está inicialmente).
i
não pode ser deslocado para a esquerda se I
estiver diretamente para a esquerda (como é inicialmente), mas sempre pode ser deslocado para a direita.
Observe que, com essas regras, I
sempre permanecerá à esquerda de i
e tentará I
ser alterado antes i
para todos os emoticons.
Seu programa ou função precisa imprimir ou retornar uma sequência da Ii
linha final após aplicar todos os turnos na ordem indicada, usando espaços (
) ou pontos ( .
) para espaço vazio. Espaços ou períodos finais e uma nova linha final são opcionalmente permitidos na saída. Não misture espaços e períodos.
Por exemplo, a entrada
>_> >_> <_>
tem saída
I...i
porque as mudanças se aplicam como
start |Ii >_> |I.i >_> |.I.i <_> |I...i
O código mais curto em bytes vence. O desempatador é a resposta votada mais alta.
Casos de teste
#[id number]
[space separated input]
[output]
Usando .
para maior clareza.
#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