Para el propósito de esta pregunta, una curva serpenteante es aquella que sigue la dirección general de izquierda a derecha, pero realiza repetidamente n + 1 vueltas a 90 grados a la izquierda y luego n + 1 gira a la derecha (para n> 0).
De hecho, el meandro mismo tendrá n
segmentos.
Los giros se denotan con +
.
El ancho de los meandros (la distancia entre dos +
) es 3 en el horizonte ( ---
) y 1 en la vertical ( |
)
Aquí están los segmentos individuales, una curva serpenteante con tamaños n de 1 a 5:
+-------------------+
| |
+---------------+ | +-----------+ |
| | | | | |
+-----------+ | +-------+ | | | +---+ | |
| | | | | | | | | | | |
+-------+ | +---+ | | +---+ | | | +---+ | | |
| | | | | | | | | | | | | |
+---+ +---+ | +---+ | | +-------+ | | +-----------+ | |
| | 1 | | 2 | | 3 | | 4 | | 5
---+ +-------+ +-----------+ +---------------+ +-------------------+ +
Desafío:
Dados dos números positivos n
y m
, dibuje m
segmentos de una curva serpenteante con tamaño n
. Puede escribir un programa completo o una función.
Entrada:
n
> 0 El tamaño de la curva
m
> 0 Número de segmentos para dibujar
Salida:
Una representación ASCII de la curva serpenteante.
Ejemplos:
n = 3
m = 2
+-----------+ +-----------+
| | | |
| +---+ | | +---+ |
| | | | | | | |
+---+ | | +---+ | |
| | | |
-----------+ +-----------+ +
n = 2
m = 5
+-------+ +-------+ +-------+ +-------+ +-------+
| | | | | | | | | |
+---+ | +---+ | +---+ | +---+ | +---+ |
| | | | | | | | | |
-------+ +-------+ +-------+ +-------+ +-------+ +
n = 4
m = 4
+---------------+ +---------------+ +---------------+ +---------------+
| | | | | | | |
| +-------+ | | +-------+ | | +-------+ | | +-------+ |
| | | | | | | | | | | | | | | |
| +---+ | | | +---+ | | | +---+ | | | +---+ | |
| | | | | | | | | | | | | | | |
+-------+ | | +-------+ | | +-------+ | | +-------+ | |
| | | | | | | |
---------------+ +---------------+ +---------------+ +---------------+ +
Criterios ganadores:
Este es el código de golf , por lo que gana el código más corto en bytes en cada idioma. Explique su código, si tiene tiempo para hacerlo.
n
queda turnos?n+1
cuando miramos los ejemplos, especialmente entre los segmentos individuales ..Respuestas:
Carbón ,
523433 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Ingrese el tamaño del meandro.
Pivote hacia arriba cuando el dibujo comience a la derecha y trabaje a la izquierda.
Recorre el número deseado de meandros.
Pase sobre los segmentos del meandro.
Imprimir a
+
.k
Alterne entre duplicar y cuadruplicar las longitudes ya que las líneas horizontales son dos veces más largas, pero disminuya el resultado antes de imprimir para tener en cuenta
+
que se acaba de imprimir.Pivote apropiadamente para el siguiente segmento.
fuente
APL (Dyalog Classic) ,
10810195 bytesPruébalo en línea!
fuente
Python 3 ,
371354346328298290 bytes-20B Gracias a ceilingcat
Pruébalo en línea!
Pre-golf:
fuente
C (gcc) ,
559 540 523 511 494 484 476 468 456 447443 bytesPruébalo en línea!
Ligeramente menos golfizado
fuente
Guión - shell POSIX guión, 528 bytes
Pruébalo en línea!
golfizado:
sin golf:
fuente
Python 2 , 261 bytes
Pruébalo en línea!
5 bytes de este consejo de Esolanging Fruit .
fuente