Escreva um programa ou função que receba uma seqüência de caracteres de linha única não vazia de caracteres ascii imprimíveis , excluindo espaço:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Você pode assumir que a entrada é válida.
Com base na entrada, desenhe uma nova sequência organizada em uma grade de espaços e linhas de texto seguindo os gráficos das tartarugas - regras esquemas em que a tartaruga sempre ocupa um espaço da grade e pode apenas enfrentar as direções cardinais.
Imprima o primeiro caractere na sequência de entrada na grade de texto. A tartaruga começa aqui de frente para a direita. Itere sobre o restante dos caracteres na sequência de entrada (parando apenas se a tartaruga ficar presa), repetindo este processo:
Se os 4 espaços da grade diretamente vizinhos à tartaruga estiverem todos preenchidos (ou seja, nenhum deles é um espaço), pare de repetir. A tartaruga está presa e a grade está o mais completa possível.
Observe o caractere atual na entrada em comparação com o caractere anterior:
Se o caractere atual estiver lexicamente anterior ao anterior, gire a tartaruga um quarto de volta à esquerda.
Se o caractere atual estiver lexicamente após o anterior, gire a tartaruga um quarto de volta à direita.
Se o caractere atual for igual ao anterior, não gire a tartaruga.
Se o espaço da grade que a tartaruga está enfrentando agora não estiver vazio (por exemplo, não é um espaço), gire repetidamente a tartaruga um quarto de volta para a esquerda até que ela esteja enfrentando um espaço vazio na grade.
Mova a grade da tartaruga um passo à frente na direção em que ela está voltada e imprima o caractere atual na grade no novo local da tartaruga.
Imprima ou retorne a sequência de grade de texto resultante sem linhas ou colunas estranhas de espaço em branco. As linhas podem ter espaços à direita até a coluna mais à direita com um não espaço, mas não além. Uma única nova linha à direita é opcionalmente permitida.
O código mais curto em bytes vence.
Exemplo
Aqui estão todas as etapas da entrada spattuuxze
. Os ^V<>
caracteres mostram a direção que a tartaruga está voltada; eles não fazem parte da entrada ou saída.
s>
^
p
s
<ap
s
^
t
ap
s
^
t
t
ap
s
tu>
t
ap
s
tuu>
t
ap
s
tuu
t x
apV
s
tuu
<zx
ap
s
Nesse ponto, a tartaruga fica presa para que e
nunca seja impressa e a saída final seja:
tuu
tzx
ap
s
A seguir, é apresentada uma saída semelhante, mas inválida, pois possui uma coluna inicial desnecessária de espaço em branco:
tuu
tzx
ap
s
Casos de teste
spattuuxze
tuu
tzx
ap
s
spattuuxxze
tuu
t x
apx
sze
1111111
1111111
ABCDEFGHIJKLMNOP
PEFG
ODAH
NCBI
MLKJ
`_^]\[ZYXWVUTSR
^_RS
\]`UT
[ZWV
YX
Woo!
W
o
o!
woo!
!o
o
w
Wheeee
W
heeee
banana
a
an
an
b
Turtle
T
ure
tl
turTle
e
tTl
ur
(Diga-me imediatamente se algum deles parecer errado.)
PONMLKJIHGFEDCBA
, pois o resultado não é apenas um quadrado e contrasta com oABCDEFGHIJKLMNOP
de destacar a assimetria nas regras.Respostas:
Groovy (357 bytes)
Nenhuma lib de tartaruga externa foi usada e nenhuma tartaruga foi prejudicada.
Experimente aqui: https://groovyconsole.appspot.com/edit/5115774872059904
Tentativas anteriores
Groovy (397 bytes)
https://groovyconsole.appspot.com/script/5179465747398656
fonte
Java,
408406 bytesA função obtém a entrada como String e retorna o resultado como uma String.
Internamente, ele usa uma matriz de caracteres 2D para armazenar as letras e mantém as colunas e linhas mínimas e máximas usadas para retornar o subconjunto que foi usado.
Portanto, no String de resultado, não há colunas iniciais de espaços em branco, mas há espaços em branco à direita até a coluna mais à direita com um caractere não-espaço. Uma nova linha é adicionada no final.
Quaisquer sugestões para jogar mais são bem-vindas :-)
fonte
%
é o restante em java e pode ser negativo, o que não é desejado. Obrigado pelas sugestões :-)Python3,
419414 bytesfonte