O desafio
Sua tarefa é animar o Adve the Adventurer, movendo-se através de um labirinto assustador (ou seja, Halloween). Adve é um •
; ele é fluido como personagem, então ele não se importa de ser representado por um personagem diferente.
Para animar o Adve, você imprime cada quadro; um quadro é o mapa com sua localização atual. Adve move um espaço para frente a cada turno e nunca recua. Ele começa na primeira linha e termina na última.
Entrada
Qualquer formato razoável, como uma string com um delimitador ou matriz de strings. Você pode assumir que a entrada será um mapa maior que 3 * 3, contendo apenas um caminho possível. Os únicos caracteres presentes serão #
e .
Resultado
Os quadros.
Labirinto de exemplo ( ok ... labirinto )
Aqui está um mapa sem Adve; o primeiro e o último quadros são este mapa vazio (este mapa é 9x15):
### #####
## #####
## ######
## #
####### #
# ### #
# # # #
# # ###
# #######
# ####
#### ####
#### ###
##### ###
##### ###
##### ###
Isso é código-golfe , então o código mais curto em bytes vence!
A saída exata para isso pode ser encontrada aqui (37 quadros).
Respostas:
Perl, 84 bytes
Obrigado @Ton Hospel por me guiar na direção certa para jogar golfe em torno de 30 bytes!
Bytecount inclui 82 bytes de código e
-0p
sinalizadores.Observe que existem dois espaços finais e nenhuma nova linha final (não funcionará de outra maneira).
Pega o labirinto como entrada e gera todos os quadros necessários para o Adve sair dele. Observe que Adve é um em
&
vez de um•
, pois o último não é utf8 (e o perl não usa utf8 por padrão). Execute-o com-0pE
sinalizadores:Só para os olhos , eu também fiz esta versão animada, que é um pouco mais longa, mas limpará o terminal entre cada impressão e o sono 0,15 s, para que pareça que o Adve está realmente se movendo:
fonte
$s="@+"
, não havia percebido anteriormente que isso@+
só será alterado se ocorrer um regex bem - sucedido . E emredo
vez dewhile
salvar um ou dois bytes). Alguma dica sobre como jogar mais? Acho que tenho que me livrar deles dey///
alguma forma, ous///
diminuir, mas de qualquer maneira não sei como.y///
é muito bem desde que você precisa de algo para indicar a direção (de notar que você começa a escolher de que lado) Mas a principal melhoria virá de substituições que combinams/ &/&A/
es/& /A&/
junto (e o próximo ao lado) para ver que esses não eram o regex que eu precisava combinar! Muito obrigado! (E obrigado por me deixar descobrir como jogar golfe)!JavaScript (ES6), 137
(1 byte economizado thx @ETHproductions)
Menos golfe
Teste
fonte