Aux fins de cette question, une courbe sinueuse est une courbe qui suit la direction générale de gauche à droite, mais effectue à plusieurs reprises n + 1 tours à 90 degrés vers la gauche, puis n + 1 tours vers la droite (pour n> 0).
En fait, le méandre lui-même aura des n
segments.
Les tours sont indiqués par +
.
La largeur des méandres (la distance entre deux +
) est de 3 à l'horizon ( ---
) et de 1 à la verticale ( |
)
Voici les segments simples d'une courbe sinueuse avec des tailles n de 1 à 5:
+-------------------+
| |
+---------------+ | +-----------+ |
| | | | | |
+-----------+ | +-------+ | | | +---+ | |
| | | | | | | | | | | |
+-------+ | +---+ | | +---+ | | | +---+ | | |
| | | | | | | | | | | | | |
+---+ +---+ | +---+ | | +-------+ | | +-----------+ | |
| | 1 | | 2 | | 3 | | 4 | | 5
---+ +-------+ +-----------+ +---------------+ +-------------------+ +
Défi:
Étant donné deux nombres positifs n
et m
, dessinez des m
segments d'une courbe sinueuse avec la taille n
. Vous pouvez écrire un programme complet ou une fonction.
Contribution:
n
> 0 La taille de la courbe
m
> 0 Nombre de segments à dessiner
Production:
Une représentation ASCII de la courbe sinueuse.
Exemples:
n = 3
m = 2
+-----------+ +-----------+
| | | |
| +---+ | | +---+ |
| | | | | | | |
+---+ | | +---+ | |
| | | |
-----------+ +-----------+ +
n = 2
m = 5
+-------+ +-------+ +-------+ +-------+ +-------+
| | | | | | | | | |
+---+ | +---+ | +---+ | +---+ | +---+ |
| | | | | | | | | |
-------+ +-------+ +-------+ +-------+ +-------+ +
n = 4
m = 4
+---------------+ +---------------+ +---------------+ +---------------+
| | | | | | | |
| +-------+ | | +-------+ | | +-------+ | | +-------+ |
| | | | | | | | | | | | | | | |
| +---+ | | | +---+ | | | +---+ | | | +---+ | |
| | | | | | | | | | | | | | | |
+-------+ | | +-------+ | | +-------+ | | +-------+ | |
| | | | | | | |
---------------+ +---------------+ +---------------+ +---------------+ +
Critères gagnants:
Il s'agit de code-golf , donc le code le plus court en octets dans chaque langue l'emporte. Veuillez expliquer votre code, si vous avez le temps de le faire.
n
virages à gauche?n+1
en regardant les exemples, en particulier entre les segments simples ..Réponses:
Fusain ,
523433 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Saisissez la taille du méandre.
Pivotez vers le haut lorsque le dessin commence à droite et fonctionne à gauche.
Faites une boucle sur le nombre souhaité de méandres.
Faites une boucle sur les segments du méandre.
Imprimer a
+
.k
Alterner entre doubler et quadrupler les longueurs puisque les lignes horizontales sont deux fois plus longues, mais décrémenter le résultat avant l'impression pour tenir compte de ce
+
qui vient d'être imprimé.Pivotez de manière appropriée pour le segment suivant.
la source
APL (Dyalog Classic) ,
10810195 octetsEssayez-le en ligne!
la source
Python 3 ,
371354346328298290 octets-20B Merci au plafond
Essayez-le en ligne!
Pré-golf:
la source
C (gcc) ,
559 540 523 511 494 484 476 468 456 447443 octetsEssayez-le en ligne!
Un peu moins golfé
la source
Dash - Script shell POSIX, 528 octets
Essayez-le en ligne!
golfé:
non golfé:
la source
Python 2 , 261 octets
Essayez-le en ligne!
5 octets de cette astuce par Esolanging Fruit .
la source