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 ..