Le schéma ci-dessous constituera la base de ce défi.
/\
\/
/\
/ \
/ \
/\/ \/\
\/\ /\/
\ /
\ /
\/
/\
\/
Étant donné une largeur et une hauteur d'entrée, chacune >=1
génère le motif d'art ASCII ci-dessus répété autant de fois, se rejoignant (et se chevauchant) au niveau des petits diamants.
Par exemple, voici une entrée avec width = 2
et height = 1
:
/\ /\
\/ \/
/\ /\
/ \ / \
/ \ / \
/\/ \/\/ \/\
\/\ /\/\ /\/
\ / \ /
\ / \ /
\/ \/
/\ /\
\/ \/
Voici une entrée width = 3
et height = 2
:
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
Règles et E / S
- L'entrée et la sortie peuvent être fournies par n'importe quelle méthode pratique .
- Vous pouvez l'imprimer sur STDOUT ou le renvoyer en tant que résultat de fonction.
- Un programme complet ou une fonction sont acceptables.
- N'importe quelle quantité d'espace blanc étranger est acceptable, tant que les caractères s'alignent correctement.
- 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) l'emporte.
Réponses:
Toile ,
2625242118 octetsEssayez-le ici!
-3 octets en fixant le
m
canevas non répétéExplication:
la source
JavaScript (ES8),
167161159 octetsNB: Ceci encode le motif. Voir mon autre réponse pour une approche mathématique plus courte.
Prend l'entrée comme
(width)(height)
.Essayez-le en ligne!
Comment?
Nous encodons la moitié supérieure du motif avec des chiffres:
\
/
Cela donne:
Pour la moitié inférieure, nous utilisons les lignes4,3,2,0 avec
/
et\
inversé.la source
JavaScript (ES6), 139 octets
Cela utilise une approche assez différente de ma réponse initiale, donc je poste ceci séparément.
Prend l'entrée comme
(width)(height)
.Essayez-le en ligne!
Comment?
Compte tenu de la largeurw et de la hauteur h , nous dessinons la sortie caractère par caractère sur une grille qui est:
avecx allant de 10w+2 à 0 (de gauche à droite) et y allant de 10h+10 à 9 (de haut en bas).
Exemple pourw=3 et h=2 :
Pour toutes les autres cellules, nous calculons:
Nous dessinons un
"/"
si:Nous dessinons un
"\"
si:Ou nous dessinons un espace si aucune de ces conditions n'est remplie.
la source
C ++ (gcc) , 137 octets
Essayez-le en ligne!
Explication
la source
#include
Haskell , 179 octets
Essayez-le en ligne!
Haskell , 181 octets
Essayez-le en ligne!
la source
reverse.map(map k)<>id
over(++).reverse=<<map(map k)
vous permet d'économiser 3 octets dans les deux solutions.map t
peut devenirt<$>
ettake$10*x+2
enregistrer un autre octet aussi et enfin vous pouvez utilisercycle"\\ /"!!n
plus"\\ /"!!mod n 3
- maintenant le deuxième est plus court :) Essayez-le en ligne!Charbon de bois ,
242220 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Dessinez un huitième du motif d'origine.
Dupliquez-le trois fois pour terminer le motif d'origine.
Copiez le nombre de fois requis horizontalement.
Copiez le nombre de fois requis verticalement.
la source
Powershell, 146 octets
Explication
Le modèle est un tableau de 10 x 10 caractères:
Le script:
Deux choses pour le golf:
replace
.la source
Perl 5
-p
, 148 octetsEssayez-le en ligne!
la source
PHP, 159 octets
motif tiré de mazzy; traduit en 1-2-3, converti en base26 -> décodé par le programme
nécessite PHP 5.5 ou version ultérieure. Courez avec
-nr
ou essayez-le en ligne .le calcul peut être plus court (comme c'était le cas pour Arnauld). Je peux examiner cela.
la source
Kotlin ,
196135 octetsÉconomie de 61 octets grâce à la suggestion ASCII uniquement d'utiliser l'algorithme C ++ d'AZTECCO.
Essayez-le en ligne!
la source
Python 3 ,
194192 192187127 octets@ Solution ASCII uniquement:
Essayez-le en ligne!
Solution originale
Essayez-le en ligne!
-2 octets grâce à @Black Owl Kai montrant que les hauts et les bas sont accessibles à partir du tableau généré plutôt que dans des variables distinctes.
-5 octets de plus grâce à @Black Owl Kai utilisant une manière plus créative de stocker les diamants
Génère cette portion de chaque diamant:
Un
/\
ajout à la fin de chaque ligne pour le compléter. Ensuite, les/
s et les\
s sont échangés pour former le haut de chaque diamant, et l'ordre des lignes est inversé pour former la moitié inférieure. Enfin, il ajoute la toute dernière rangée de/\
s et la toute dernière rangée de\/
s pour compléter l'image.la source
+=
/*=
affectations et en retournant le diamant entier à l'envers, ce qui rend la dernière chaîne plus facile à stocker