Para o propósito desta pergunta, uma curva sinuosa é aquela que segue a direção geral da esquerda para a direita, mas faz repetidamente n + 1 voltas a 90 graus à esquerda e depois n + 1 vira à direita (para n> 0).
De fato, o meandro terá n
segmentos.
Os turnos são indicados com +
.
A largura dos meandros (a distância entre dois +
) é 3 no horizonte ( ---
) e 1 na vertical ( |
)
Aqui estão os segmentos únicos de uma curva sinuosa com tamanhos n de 1 a 5:
+-------------------+
| |
+---------------+ | +-----------+ |
| | | | | |
+-----------+ | +-------+ | | | +---+ | |
| | | | | | | | | | | |
+-------+ | +---+ | | +---+ | | | +---+ | | |
| | | | | | | | | | | | | |
+---+ +---+ | +---+ | | +-------+ | | +-----------+ | |
| | 1 | | 2 | | 3 | | 4 | | 5
---+ +-------+ +-----------+ +---------------+ +-------------------+ +
Desafio:
Dados dois números positivos n
e m
, desenhe m
segmentos de uma curva sinuosa com o tamanho n
. Você pode escrever um programa completo ou uma função.
Entrada:
n
> 0 O tamanho da curva
m
> 0 Número de segmentos para desenhar
Resultado:
Uma representação ASCII da curva sinuosa.
Exemplos:
n = 3
m = 2
+-----------+ +-----------+
| | | |
| +---+ | | +---+ |
| | | | | | | |
+---+ | | +---+ | |
| | | |
-----------+ +-----------+ +
n = 2
m = 5
+-------+ +-------+ +-------+ +-------+ +-------+
| | | | | | | | | |
+---+ | +---+ | +---+ | +---+ | +---+ |
| | | | | | | | | |
-------+ +-------+ +-------+ +-------+ +-------+ +
n = 4
m = 4
+---------------+ +---------------+ +---------------+ +---------------+
| | | | | | | |
| +-------+ | | +-------+ | | +-------+ | | +-------+ |
| | | | | | | | | | | | | | | |
| +---+ | | | +---+ | | | +---+ | | | +---+ | |
| | | | | | | | | | | | | | | |
+-------+ | | +-------+ | | +-------+ | | +-------+ | |
| | | | | | | |
---------------+ +---------------+ +---------------+ +---------------+ +
Critérios de vitória:
Isso é código-golfe , então o código mais curto em bytes em cada idioma vence. Por favor, explique seu código, se você tiver tempo para fazê-lo.
n
virar à esquerda?n+1
quando se olha para os exemplos, especialmente entre os únicos segmentos ..Respostas:
Carvão ,
523433 bytesExperimente online! Link é a versão detalhada do código. Explicação:
Insira o tamanho do meandro.
Gire para cima quando o desenho começar à direita e trabalhar à esquerda.
Passe o número desejado de meandros.
Faça um loop sobre os segmentos do meandro.
Imprimir a
+
.k
Alterne entre dobrar e quadruplicar os comprimentos, pois as linhas horizontais têm o dobro do comprimento, mas diminua o resultado antes da impressão para levar em conta o
+
que acabou de ser impresso.Gire adequadamente para o próximo segmento.
fonte
APL (Dyalog Classic) ,
10810195 bytesExperimente online!
fonte
Python 3 ,
371354346328298290 bytes-20B Graças a ceilingcat
Experimente online!
Pré-golfe:
fonte
C (gcc) ,
5595405235114944844766468456447bytesExperimente online!
Um pouco menos golfe
fonte
Traço - script POSIX Shell, 528 bytes
Experimente online!
golfed:
ungolfed:
fonte
Python 2 , 261 bytes
Experimente online!
5 bytes desta dica por Esolanging Fruit .
fonte