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 
wasdes 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
aescribe 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
textarealugar: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.\nsegundos 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
Olugar 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-16no funciona. Por☺lo tanto, debe contarse como 3.Python 2.7 - 274 bytes
Versión sin golf
fuente
SyntaxError: invalid syntax.05AB1E ,
35343028 bytesUsos
0como 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.
6240para 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