Écrivez une fonction ou un programme nommé qui accepte un seul entier N et imprime (dans STDOUT) ou renvoie (sous forme de chaîne) les N premières barres de la spirale ci-dessous, en commençant par la barre verticale au centre et en spirale dans le sens horaire vers l'extérieur.
_______________
/ _____________ \
/ / ___________ \ \
/ / / _________ \ \ \
/ / / / _______ \ \ \ \
/ / / / / _____ \ \ \ \ \
/ / / / / / ___ \ \ \ \ \ \
/ / / / / / / _ \ \ \ \ \ \ \
/ / / / / / / / \ \ \ \ \ \ \ \
| | | | | | | | | | | | | | | |
\ \ \ \ \ \ \___/ / / / / / / /
\ \ \ \ \ \_____/ / / / / / /
\ \ \ \ \_______/ / / / / /
\ \ \ \_________/ / / / /
\ \ \___________/ / / /
\ \_____________/ / /
\_______________/ /
Vous pouvez supposer que 0 <N <= 278. Votre sortie ne peut contenir aucun espace devant le caractère le plus à gauche de la spirale. Vous pouvez éventuellement imprimer une seule nouvelle ligne de fin.
Pour une entrée de 10, la sortie correcte est
_
/ \
| |
\___/
Pour une entrée de 2, la sortie correcte est
/
|
Pour une entrée de 20, la sortie correcte est
___
/ _ \
/ / \ \
| | | |
\___/ /
Une sortie qui serait incorrecte car le caractère le plus à gauche est précédé d'un espace est
___
/ _ \
/ / \ \
| | | |
\___/ /
Le gagnant est la soumission la plus courte, en octets.
|
) sont simplement le caractère le plus proche qui peut représenter la réunion d'un/
et\
.Réponses:
CJam - 156/147
Essayez-le en ligne
Il fonctionne avec des entrées de 1 à 378 inclus (100 de plus que nécessaire)
En utilisant le dernier code CJam engagé (accessible au public en hg) mais non publié au moment de la publication de ce défi, la solution peut être raccourcie à 147 caractères:
Explication:
Le programme construit de manière itérative toutes les spirales sous forme de tableaux de [caractère xy] en commençant par
[0 0 '|]
, obtient la spirale demandée, ajuste les coordonnées de sorte que le minimum x et y soient 0, crée une matrice d'espaces (avec le nombre correct de lignes et 50 colonnes ) définit ensuite les caractères de la spirale et joint les lignes avec des retours à la ligne.la source
Python 2,
290289C'est probablement vraiment mauvais, mais j'ai essayé: D
La sortie contient des espaces de fin, mais cela n'est pas interdit dans la spécification.
Mise à jour: enregistré 1 octet avec le passage
\n
à;
.la source
JavaScript (ES6) 257
288 321Modifier les étapes fusionnées.
Modifier le code Golfed pour jouer un peu plus
Construisez la sortie de manière itérative dans le tableau r, en gardant une trace de la position x et y actuelle et de la direction actuelle. Lorsque la position x ou y est <0, tout le tableau r est réajusté.
Variables principales:
Non golfé
Testez dans la console Firefox / FireBug (ou JSFiddle thx @Rainbolt)
Production
la source
Pyth,
166165Je viens de traduire ma réponse Python en Pyth, avec mes compétences pas très bonnes en Pyth. Le vomi résultant est en dessous.
la source