fundo
Aqui está um desafio relacionado ao Halloween.
Como você deve ter visto no meu último desafio , gosto bastante do que chamo de animações de arte ascii, que não é apenas desenhar um padrão, mas sim um padrão que progride. Essa idéia veio à minha mente depois que me pediram, há alguns anos, para animar uma apresentação (bastante chata), fazendo morcegos ascii aleatórios voarem pela tela no Halloween. Escusado será dizer que eu estava devidamente obrigado (eu estava sendo pago por isso), mas isso me fez pensar que há mais na vida do que morcegos aleatórios. Inspirado por isso, gostaria de propor este desafio.
Desafio
Faça um morcego voar ao redor da lua.
Aqui está um morcego:
^o^
Aqui está a lua:
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
Você deve mostrar todas as etapas do voo dos morcegos (consulte a saída).
Entrada
Nenhum
Saída
^o^
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
mmm^o^
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
mmm
mmmmmmm^o^
mmmmmmmmm
mmmmmmm
mmm
mmm
mmmmmmm
mmmmmmmmm^o^
mmmmmmm
mmm
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm^o^
mmm
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm^o^
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
^o^
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
^o^mmm
mmm
mmmmmmm
mmmmmmmmm
^o^mmmmmmm
mmm
mmm
mmmmmmm
^o^mmmmmmmmm
mmmmmmm
mmm
mmm
^o^mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
^o^mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
^o^
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
Regras
- Nenhuma leitura de arquivos ou sites externos
- Você pode enviar um programa completo ou uma função
- Espaços extras e / ou novas linhas são ótimos para mim
- Falhas padrão banidas como de costume
- O morcego deve terminar de volta ao topo da lua
- Sinta-se à vontade para limpar a tela entre os quadros, se desejar, porém isso não é um requisito. A saída mostrada acima é boa
- Como se trata de código de golfe, o vencedor será a resposta com a menor contagem de bytes, embora qualquer resposta seja bem-vinda
Amostra
Implementação de referência em Python 2 totalmente não-destruído (620 bytes, mas apenas para provar que isso pode ser feito. Pode jogar mais tarde).
b='^o^'
m=[' ',
' mmm ',
' mmmmmmm ',
' mmmmmmmmm ',
' mmmmmmm ',
' mmm ',
' ']
p=[(9,12),(12,15),(14,17),(15,18),(14,17),(12,15),(9,12),(6,9),(4,7),(3,6),(4,7),(6,9),(9,12)]
d=0
for z in range(7):
x=map(str,m[z])
c="".join(x[:p[z][0]]) + b + "".join(x[p[z][1]:])+"\n"
print "\n".join(m[:z]) + "\n" + c+"\n".join(m[z+1:])
for z in range(6)[::-1]:
x=map(str,m[z])
c="".join(x[:p[z+6][0]]) + b + "".join(x[p[z+6][1]:])+"\n"
print "\n".join(m[:z]) + "\n" + c+"\n".join(m[z+1:])
Resultado
Embora @ Jonathan, obviamente, vença em contagem de bytes com Jelly, vou marcar a resposta Brainfuck de @Oyarsa como a resposta aceita apenas porque acho que qualquer pessoa que possa realmente fazer algo assim em um idioma tão louco merece +15 representantes, independentemente de quantos bytes são necessários. Isso não é porque eu tenha algum problema com os idiomas do golfe. Veja minha resposta a uma pergunta sobre isso no meta, se você tiver alguma dúvida. Muito obrigado e respeito a todos que contribuíram em qualquer idioma.