Écrivez le code le plus court mesuré par le nombre d'octets pour générer une grille ASCII composée de losanges, compte tenu des paramètres suivants:
- m - nombre de losanges complets dans une rangée
- n - nombre de lignes
- s - côté du plus petit losange
- r - niveau d'imbrication - combien y a-t-il de losanges à l'intérieur des "base" (qui sont fonud entre les intersections de la grille)
Exemples
1. Input: 5 3 1 0
Output:
/\/\/\/\/\
\/\/\/\/\/
/\/\/\/\/\
\/\/\/\/\/
/\/\/\/\/\
\/\/\/\/\/
A 5x3 grid of rhombi with side 1, no nesting
2. Input: 3 2 2 0
Output:
/\ /\ /\
/ \/ \/ \
\ /\ /\ /
\/ \/ \/
/\ /\ /\
/ \/ \/ \
\ /\ /\ /
\/ \/ \/
A 3x2 grid of rhombi with side 2, no nesting
3. Input: 5 2 1 2
Output:
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
A 5x2 grid of rhombi with side 1 (the smallest rhombus), level of nesting is 2
4. Input: 4 2 2 1
Output:
//\\ //\\ //\\ //\\
///\\\///\\\///\\\///\\\
// \\// \\// \\// \\
\\ //\\ //\\ //\\ //
\\\///\\\///\\\///\\\///
\\// \\// \\// \\//
//\\ //\\ //\\ //\\
///\\\///\\\///\\\///\\\
// \\// \\// \\// \\
\\ //\\ //\\ //\\ //
\\\///\\\///\\\///\\\///
\\// \\// \\// \\//
A 4x2 grid of rhombi with side 2 with level of nesting 1
5. Input: 4 2 3 3
Output:
////\\\\ ////\\\\ ////\\\\ ////\\\\
/////\\\\\ /////\\\\\ /////\\\\\ /////\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
///// \\\\\///// \\\\\///// \\\\\///// \\\\\
//// \\\\//// \\\\//// \\\\//// \\\\
\\\\ ////\\\\ ////\\\\ ////\\\\ ////
\\\\\ /////\\\\\ /////\\\\\ /////\\\\\ /////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\///// \\\\\///// \\\\\///// \\\\\/////
\\\\//// \\\\//// \\\\//// \\\\////
////\\\\ ////\\\\ ////\\\\ ////\\\\
/////\\\\\ /////\\\\\ /////\\\\\ /////\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
///// \\\\\///// \\\\\///// \\\\\///// \\\\\
//// \\\\//// \\\\//// \\\\//// \\\\
\\\\ ////\\\\ ////\\\\ ////\\\\ ////
\\\\\ /////\\\\\ /////\\\\\ /////\\\\\ /////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\///// \\\\\///// \\\\\///// \\\\\/////
\\\\//// \\\\//// \\\\//// \\\\////
A 4x2 grid of rhombi with side 3, level of nesting 3
Assurez-vous d'afficher les losanges partiellement visibles sur les bords et les coins si nécessaire.
Réponses:
SOGL V0.12 , 20 octets
Essayez-le ici! Prend l'entrée dans l'ordre inverse de ce qu'ils sont dans les exemples - r, s, n, m.
Explication:
la source
∙*
...Fusain ,
483937 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Dessinez un carré de taille
r + 1
. Il s'agit d'un quart d'un diamant imbriqué de taille 1.Copiez le carré 1 carré à droite et en bas
s - 1
pour obtenir la bonne taille.Réfléchissez-le pour devenir un diamant imbriqué complet.
Calculez la taille de ce diamant imbriqué.
Copiez le diamant au bon
m - 1
moment.Copiez le diamant vers le bas
n - 1
fois.la source
Python 2 ,
160159158 octets-1 octet grâce à Jonathan Frech
Essayez-le en ligne!
Cela utilise le fait que le bas du losange est le haut inversé (
[::-1]
), itérant surrange(n*2)
et utilisant~x%2*2-1
pour contrôler s'il s'agit du haut ou du bas.Pour le haut (et le bas), le côté droit est juste le côté gauche inversé et le remplacer
/
par\
->l.replace(*'/\\')..[::-1]
Pour générer le motif / l'imbrication
~-s*' '+'/'*(1+r*2)+~-s*' '
est utilisé pour faire une chaîne comme///
celle-ci qui sera itérée et hachée:la source
(1+r*2)
possible(r-~r)
.Julia 0,6 , 190 octets
Il s'agit d'une solution fonctionnelle qui calcule pour chaque paire d'index
i,j
ce que le symbole doit afficher.Essayez-le en ligne!
Illustration
Commencez avec une grille
r > 0
signifie des lignes plus épaissesManipulez les coins en vérifiant quelle ligne de la grille d'origine est la plus proche
Une fée nous dit de supprimer chaque
s-1
ligneTraverser en diagonale et terminé
la source
JavaScript (ES6), 154 octets
Calcule directement le caractère à chaque cellule de la sortie.
la source
CJam, 44
Essayez-le en ligne
Explication:
la source
C # (.NET Core) , 167 octets
Essayez-le en ligne!
Je suis surpris par la taille que j'ai gérée; Je m'attendais initialement à une solution plus longue. En disant cela, je suis sûr qu'il y a d'autres astuces que j'ai ratées.
DeGolfed
la source
Python 2 ,
201189 octetsEssayez-le en ligne!
Utilise le fait que le bas est le même que le haut, mais décalé:
22 octets enregistrés grâce à Jonathan Frech
la source
s-i-1
peut êtres+~i
, en économisant deux octets.r+1+min(...
peut êtrer-~min(...
, enregistrer un autre.L=[(...)*m for
peut êtreL=[m*(...)for
, économisant un octet de plus.L+=[...];print'\n'.join(L*n)
peut consisterprint'\n'.join((L+[...])*n)
à enregistrer un autre octet, ce qui donne 196 octets .s+r-i-1
pars+~i+r
.exec
et formatage de chaîne.Perl 5, 159 + 3 (-anl) octets
Essayez-le en ligne
la source