Esta competencia ha terminado. Gracias por las interesantes entradas que no son esolang, y felicidades a Jakuje por su presentación ganadora de JavaScript.
En la gran tradición de los desafíos de arte ASCII en este sitio, aquí hay otro. Dada una entrada, dibuja una espiral.
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Simple, si? Je, je, je ... Sí ...
(Inspirado en la publicación ASCII Dragons Curve y en las publicaciones ASCII Art of the Day de Optimizer )
Entrada
La entrada tendrá la forma de una serie de parámetros, tomados del STDIN / argumento de función / etc. Estas partes pueden ser cuatro argumentos separados, un cuádruple, una matriz de tamaño 4, etc. Por simplicidad y consistencia a lo largo del desafío, representaré la entrada como una sola palabra.
- Un entero
2 ≤ x ≤ 20
que especifica el tamaño de la espiral en términos de "cuadrados" con cada carácter impreso representando un "cuadrado" de tamaño. Teóricamente, esto podría tener un alcance enorme, pero dado que estamos dibujando arte ASCII, un límite superior seguro de esto será 20, de modo que se ajuste de manera algo decente en la pantalla. - Una sola letra de
d u r
ol
, que indica el movimiento inicial desde el "cuadrado" inicial (abajo, arriba, derecha, izquierda). - Un opcional
c
, que indica "en sentido antihorario". Sic
se omite el, asuma la rotación en sentido horario para la espiral. - Un entero final
1 ≤ y ≤ 10
que especifica cuántas veces se repetirá el dibujo en espiral, utilizando el "cuadrado" final de la espiral anterior como el "cuadrado" inicial del nuevo. Estoy eligiendo un límite superior de 10 porque quiero que el dibujo termine en algún momento. - Algunas entradas de ejemplo:
20lc5
13d2
2rc1
De interés, tenga en cuenta que los valores impares para la entrada de tamaño resultarán en que @
siempre sea el centro exacto de una espiral, pero los valores pares pueden tener el desplazamiento inicial "cuadrado" en cualquiera de las cuatro direcciones diagonales, dependiendo de la dirección inicial viaje. Esto puede dar lugar a algunos ... interesantes ... patrones. Vea los dos ejemplos pares a continuación.
La entrada que no sigue la especificación de entrada (p. Ej. 11q#s
) No está definida y espero que el programa vomite adecuadamente. :)
Salida
La salida es una salida imprimible ASCII a través de STDOUT equivalente al idioma, con las siguientes especificaciones:
- El "cuadrado" de inicio (de cada recursión) debe marcarse con un signo de signo
@
. - El "cuadrado" final debe estar marcado con un signo "&"
&
. En el caso de múltiples recursiones, solo se debe marcar el "cuadrado" final&
. - Las esquinas del camino en espiral deben "apuntar" en la dirección de desplazamiento, utilizando
< > v ^
. - El recorrido vertical debe ser dibujado por tuberías
|
. - El recorrido horizontal debe dibujarse con guiones
-
. - Los "cuadrados" que se sobrescriben en las recursiones posteriores deben mostrar la dirección de viaje más reciente. Esto dará como resultado que las recursiones "más nuevas" aparezcan en capas sobre las recursiones "más antiguas". Vea el
4rc3
ejemplo a continuación. - Una nueva línea final está bien, los espacios iniciales pueden ser obligatorios y, por lo tanto, están permitidos, pero los espacios finales no están permitidos.
- No te acoplaré si usas secuencias de escape para dibujar el arte ASCII que va a STDOUT, pero estaré silenciosamente decepcionado de ti. (Seguirás siendo elegible para la recompensa si los usas)
Ejemplos
2d4
= diámetro de 2, comienza bajando, en sentido horario, 4 recursiones
&@@@@
^<<<<
En este ejemplo, el dibujo comienza en la esquina superior derecha @
, baja uno, izquierda, uno arriba. En este punto, hemos terminado la 2d
porción, y así comenzamos la segunda recursión, por lo que tenemos otro @
, uno abajo, uno izquierdo, uno arriba; luego la tercera recursión; luego el 4 y finalmente nuestro &
.
4rc3
= diámetro de 4, comienza yendo a la derecha, en sentido antihorario, 3 recursiones
&--<
v-<|
|@^|<
>--^|
|@^|<
>--^|
|@^|
>--^
En este ejemplo, el dibujo comienza en la parte inferior @
, va hacia la derecha, hacia arriba, gira en espiral, hasta que llega al centro @
y termina la 4rc
porción. Esto luego se repite dos veces más para obtener las 3 recursiones completas solicitadas. Tenga en cuenta que 4rc1
sería solo el bloque 4x4 superior izquierdo de este ejemplo.
7u1
= diámetro de 7, comienza subiendo, en sentido horario, 1 recursión (tenga en cuenta que es lo mismo que la introducción)
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Ganadores y restricciones
Este es Code Golf, por lo que gana la respuesta más pequeña en bytes. Las presentaciones deben estar en la forma habitual de programa / función / CJam Code Block / etc. Se aplican restricciones estándar de lagunas. Conductor profesional en curso cerrado. Si la irritación persiste, suspenda su uso y consulte a su médico.