Fondo
Aquí hay un desafío relacionado con Halloween.
Como habrás visto en mi último desafío, me gusta bastante lo que llamo animaciones de arte ascii, que no es solo dibujar un patrón, sino dibujar un patrón que progresa. Esta idea se me ocurrió después de que me pidieron hace un par de años animar una presentación (bastante aburrida) haciendo que murciélagos ascii al azar vuelen por la pantalla en Halloween. No hace falta decir que lo hice debidamente (me pagaban por ello) pero me hizo pensar que hay más en la vida que murciélagos aleatorios. Inspirado por esto, me gustaría proponer este desafío.
Reto
Haz que un murciélago vuele alrededor de la luna.
Aquí hay un murciélago:
^o^
Aquí está la luna:
mmm
mmmmmmm
mmmmmmmmm
mmmmmmm
mmm
Debe mostrar cada etapa del vuelo de los murciélagos (ver salida).
Entrada
Ninguna
Salida
^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
Reglas
- Sin lectura de archivos externos o sitios web
- Puede enviar un programa completo o una función
- Los espacios adicionales y / o las nuevas líneas están bien para mí.
- Lagunas estándar prohibidas como de costumbre
- El murciélago debe terminar de nuevo en la cima de la luna.
- Si lo desea, siéntase libre de borrar la pantalla entre cuadros, sin embargo, esto no es un requisito. La salida como se muestra arriba está bien
- Como se trata de un código de golf, el ganador será la respuesta con el menor recuento de bytes, aunque cualquier respuesta es bienvenida
Muestra
Implementación de referencia en Python 2 totalmente sin golf (620 bytes pero solo para demostrar que se puede hacer. Puede jugarlo más 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
Aunque @Jonathan obviamente gana en conteo de bytes con Jelly, voy a marcar la respuesta Brainfuck de @Oyarsa como la respuesta aceptada simplemente porque creo que cualquiera que pueda hacer algo como esto en un lenguaje tan loco merece +15 rep no importa cuantos bytes se necesitan Esto no es porque tenga ningún problema con los idiomas de golf. Vea mi respuesta a una pregunta sobre esto en meta si tiene alguna duda. Muchas gracias y respeto a todos los que contribuyeron en cualquier idioma.