Supposons un pavage infini d'hexagones composés de |/\
caractères.
/ \ / \ / \ / \
| | | | |
\ / \ / \ / \ / etc.
| | | |
\ / \ / \ /
Étant donné l'entrée n > 0
, sortez une partie triangulaire de ce pavage comme illustré dans les exemples ci-dessous, ancrée avec un _
au milieu d'un hexagone:
n=1
\_/
n=2
\/ \/
\_/
n=3
\ | /
\/ \/
\_/
n=4
\/ \ / \/
\ | /
\/ \/
\_/
n=5
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=6
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=7
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=8
\/ \ / \ / \ / \/
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
and so on
Règles
- Les sauts de ligne de début / fin ou d'autres espaces sont facultatifs, à condition que les caractères s'alignent correctement.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- La sortie peut être vers la console, enregistrée sous forme d'image, renvoyée sous forme de liste de chaînes, etc.
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) gagne.
Réponses:
Python 2 , 86 octets
Essayez-le en ligne!
Une des astuces d'Erik m'a permis de jouer au golf 3 octets! Enregistré 3 octets grâce à Jonathan Allan.
Comment ça marche
Tout d'abord, cela obtient l'entrée de STDIN et l'affecte à deux variables distinctes
i
etk
. Ensuite, alors que la variablei
est véridique, nous la décrémentons et générons les chaînes en conséquence; il s'agit d'un raccourci pour boucler depuis l'entrée - 1 jusqu'à 0.Générer les cordes
Je vais diviser cela en plusieurs parties:
Tout d'abord, obtenir l'espacement de tête est obtenu avec
" "*(k+~i)
. Puisquei
est mappé à travers la plage (entrée, 0] , nous devons la soustraire dek
(notre entrée d'origine stockée en toute sécurité), décrémenter et répéter un espace autant de fois.+"\\"
- Ajoute le caractère"\"
aux espaces ci-dessus.' / |\ '[i%2::2]
- Génère nos deux chaînes, à savoir"/ \ "
et" | "
, de la manière suivante:Si
i
est impair, i% 2 est 1 ,[i%2::2]
renvoie donc chacun des 2 caractères de notre plus grande chaîne, en commençant à l'index 1 (indexé 0).Si
i
est pair, i% 2 est 1 , donc le mécanisme ci-dessus fait de même sauf qu'il commence à l'index 0 .+~-i*
- Répète la chaîne générée ci-dessus, soit"/ \ "
ou" | "
, i-1 fois, et l'ajoute aux autres chaînes. L'avantage de l'opérateur au~
niveau du bit ( - Complément au niveau du bit, équivalent à i soustrait de -1 ) est qu'il ne nécessite pas de parenthèses dans ce contexte.[:k-~i]
- Obtient tous les caractères des chaînes concaténées ci-dessus jusqu'à ce que l'index k- ~ i = k - (-1 - i) = k + 1 + i .+"_/"[i>0:]
- Cela n'ajoute que"/"
si i ≥ 1 , sinon il s'ajoute_/
.Exemple complet / détails d'exécution
Prenons un exemple de la façon dont les choses fonctionnent pour une entrée de 4 :
la source
i-=1
au début de la boucle et utilisez une formation de droite légèrement différente pour la réduire à 87 octets .Python 2 , 90 octets
Essayez-le en ligne!
la source
05AB1E , 33 octets
Essayez-le en ligne!
la source
Mathematica, 131 octets
renvoie une liste de chaînes
Essayez-le en ligne!
la source
Retina ,
129119112 octetsEssayez-le en ligne!
la source
Fusain , 26 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code.
la source
Python 2 ,
1231121101091009896 octetsEssayez-le en ligne!
la source
-1-a
par~a
(comme je l'ai fait dans ma réponse).Python 2 , 103 octets
Essayez-le en ligne!
la source
APL (Dyalog) ,
9793 octetsEssayez-le en ligne!
la source
SOGL V0.12 ,
2827 octetsEssayez-le ici!
la source
Haskell ,
9695 octetsEssayez-le en ligne!
Indexé en 0 et retourne une liste de lignes.
la source
Haskell,
10199 octetsRenvoie une liste de lignes.
Essayez-le en ligne!
Comment ça fonctionne:
Modifier: @Laikoni a enregistré deux octets. Merci!
la source
([1,3..n-1]>>)
peut être utilisé à la place de([1..div n 2]>>)
.Java (OpenJDK 8) ,
315306 octetsEssayez-le en ligne!
la source
Java (OpenJDK 8) , 198 octets
Enfin obtenu en dessous de 200 octets. Publiera probablement une explication plus tard.
Essayez-le en ligne!
la source
JavaScript (ES6),
8985 octetsDémo
Afficher l'extrait de code
la source
CJam, 43
Essayez-le en ligne
la source
PHP, 89 + 1 octets
Exécuter en tant que pipe avec
-nR
ou l' essayer en ligne .la source
Pyth ,
4644 octetsEssayez-le ici!
la source