Nuestra serpiente clásica ha desarrollado un desequilibrio de las hormonas de crecimiento . Para empeorar las cosas, su cola está congelada en su lugar. Dada la entrada direccional como se especifica en Figure 1
, escriba un programa para determinar dónde crecerá.
Figura 1. Entrada direccional.
Especificaciones del programa
- Lea la entrada carácter por carácter en
STDIN
. - Después de leer un personaje, envíe la serpiente a
STDOUT
. Incluya una línea en blanco entre cada vez que imprima una serpiente. - La serpiente consta de
<>v^
y una cabeza. La cabeza de la serpiente puede ser cualquier carácter ronda de su elección, tales comoo
,0
,O
, o☺
. - Cualquier combinación de
wasd
es válida para la entrada. - Su programa no debe asumir que la entrada está dentro de una cierta longitud.
- La serpiente puede apilarse sobre sí misma, sobrescribiéndose
<>v^
. Vea ejemplos de mecánica de cultivo de serpientes. - El espacio en blanco al final está bien, pero tu serpiente debe verse correcta.
Tanteo
Este es el código de golf . Su puntaje es el número de caracteres en su programa. ¡La puntuación más baja gana!
Serpientes de ejemplo:
Entrada: ddddssaassdddddww
Salida:
>>>>v
v
v<< ☺
v ^
>>>>>^
Entrada: dddsssaaawww
Salida:
☺>>v
^ v
^ v
^<<<
Entrada: dddsssdddddasddddwww
Salida:
>>>v
v ☺
v ^
>>>>v< ^
>>>>^
Entrada: dddwwdddssssaaaaaaaaawww
Salida:
>>>v
☺ ^ v
^ >>>^ v
^ v
^<<<<<<<<<
Entrada: ddddssssaawwddddd
Salida:
>>>>v
v
>>>>>☺
^ v
^<<
Entrada: dddddssaawwwwddddd
Salida:
>>>>>☺
^
>>>^>v
^ v
^<<
Entrada:
ddddaaaasssssdddddddddddwwwwwaaaasssssdddddddddddwwwwwwwwwwsssssaaaasssssdddddddwwwwwddddssaaaasssddddaaaassssssssssdddwwwwwwwddddswaaaassssddaasssaaaaaaaaaawwwwddddssssaaaaaaaaaaawwwwddddsssssssssaaaa
Salida:
v
v
v
v
v
v<<<< v<<<< v<<<< >>>>v
v v ^ v ^ ^ v
v v ^ v ^ v<<<<
v v ^ v ^ v
v v ^ v ^ v
>>>>>>>>>>>>>>>>>>>>>v<<<<
v
v
v v<<<<
v v ^
v v
>>>>v >>>>v v v
^ v ^ v v v<<
^ v ^ v v v
^ v ^ v v v
^<<<v<<<<<<<<<<<<<
v
v
v
v
O<<<<
Respuestas:
Ruby, 207 caracteres
Sin golf:
(la lambda para
a
escribe de nuevo porque la fila en la que escribe la tarea anterior ya no está en el tablero)fuente
ECMAScript 6 Javascript (399
401431)Tiene que ejecutarse en un navegador compatible con ECMAScript 6 debido a las funciones de flecha.
Aquí hay violines que se han modificado para ejecutarse en cualquier navegador (común) al no utilizar las funciones de flecha. También imprimen a un
textarea
lugar:Versión de golf
GIF animado:
Uno de los ejemplos del OP:
El ejemplo de Stretch Maniac :
Sin golf
Aquí hay una versión (levemente) sin golf de algún momento antes de que realmente comenzara a jugar golf:
fuente
convert
. Bastante fácil :)sed, 71
Golfscript,
165126El mismo enfoque que mi respuesta anterior, pero colocando el cursor correctamente antes y después. Estoy bastante orgulloso del enfoque del posicionamiento del cursor: básicamente, primero ejecuta la serpiente en reversa, sin imprimir caracteres.
fuente
echo "dddddssaawwwwddddd" | sed -e 's/w/\^\x1B[D\x1B[A/g' -e 's/a/<\x1B[2D/g' -e 's/s/v\x1B[S\x1B[D/g' -e 's/d/>/g' -e 's/$/@/'
no me da la salida correcta.\n
segundos después de esto@
para que su mensaje vaya a otro lado.Java - 646
¡Bien podría ser el primero!
Apuesto a que todos pueden vencer esto.
un (tipo de) golf
Más pequeño -
input - dddsssdddwwwwaaaaaaaassssssssssddddddddddddddddd
input - dddsssdddddasddddwww
mi favorito personal - dwdwdwddaasassdddddwdwdwddsdswawaasassdddddddwdwdwddsdswawaasassddddwwwwwwwssssssdsdddwwwwddaassddaassddddsssdddwdwdwddaasasassddddwwwwssssssssasasaaawdwwdwddwwdddddddwdwdwddsdswawaasassddddddddddwwdwwwwaasssassdsdddddddwdwdwwwwasasssssssssssdwwwwwwwddd
fuente
C # 607
"Ungolfed" con espacios en blanco (esto no se mantendrá sincronizado con la versión golfizada):
fuente
Python 3: 259 bytes
Decidí guardar la serpiente en un dict, con coordenadas para las llaves. Luego busque e itere sobre el rango de salida, sustituyendo espacios en blanco.
PD. Mi primer golf :) Avísame si mi respuesta es inapropiada
fuente
O
lugar de☺
ahorra 2 bytes.☺
Es un arenque rojo.☺
no se contaba realmente como 3 bytes.O
, por lo que no me preocuparía. Está claro por el código que todavía funcionaría para cualquier otro personaje, pero el uso le☺
permite ejecutar convenientemente los casos de prueba desde el desafío sin cambios.#coding=utf-8
. Tenga en cuenta que#coding=utf-16
no funciona. Por☺
lo tanto, debe contarse como 3.Python 2.7 - 274 bytes
Versión sin golf
fuente
SyntaxError: invalid syntax
.05AB1E ,
35343028 bytesUsos
0
como cabeza de la serpiente.-4 bytes gracias a @Grimy .
Pruébalo en línea (no hay un conjunto de pruebas para todos los casos de prueba a la vez, porque no hay forma de restablecer el lienzo, por lo que las salidas se superpondrían ...).
Explicación:
Vea esta sugerencia mía 05AB1E (secciones ¿Cómo comprimir cadenas que no forman parte del diccionario? Y ¿Cómo comprimir enteros grandes? ) Para comprender por qué
.•₃º•
es"adsw"
yŽO^
es6240
.En cuanto a una breve explicación del lienzo incorporado
Λ
y sus tres argumentos:Primer argumento: longitud (s): el tamaño de las líneas que queremos dibujar. Como tenemos que tener en cuenta la superposición, utilizamos el tamaño 2 para cada personaje y un 1 adicional para la cabeza de la serpiente.
Segundo argumento: cadena (s): los caracteres que queremos mostrar. Cuáles son los personajes en este caso, junto con el personaje principal de la serpiente.
Tercer argumento: dirección (s): las direcciones en las que se deben dibujar estas líneas de caracteres de la longitud dada. En general, tenemos las direcciones
[0,7]
que se asignan a estas direcciones:Por eso tenemos el número entero[ ← , → , ↓ , ↑ ] respectivamente.
6240
para las direccionesConsulte este consejo mío de 05AB1E para obtener una explicación más detallada sobre el lienzo incorporado
Λ
.fuente
γ
sea necesario en absoluto. Esto parece funcionar bien.Perl - 394
No es el más corto, pero supera a Javascript, C # y Java al menos.
Algunos trucos:
Cosas que duelen:
fuente
C - 273 bytes - con entrada interactiva!
El campo se imprime cada vez que se ingresa un personaje y crece si la cabeza de la serpiente se acerca al borde. No sé cuán portátil es: alguien en Internet dijo que getch () no funciona en plataformas que no son de Windows. Es difícil decir si ASCII 1 se verá como una cara sonriente tampoco.
La versión de golf es bastante molesta ya que no hay forma de salir con gracia del programa. Control-C no funciona para mí. Por otro lado, la versión no protegida termina si se ingresa un carácter que no sea 'w', 'a', 's' o 'd'.
Los llamados "no golfistas":
fuente
05AB1E , 23 bytes
Pruébalo en línea!
Explicación:
fuente