L'autre jour, mon fils m'a demandé de lui construire un escalier en utilisant des blocs Lego-ish. Et j'ai trouvé quelque chose comme ça:
Ensuite, mon enfant m'a demandé un programme utilisant le moins d'octets générant un escalier similaire sur un écran d'ordinateur. Je ne suis pas très bon en golf de code , j'ai donc besoin de votre aide. J'ai besoin d'un programme qui:
- Reçoit un entier positif avec le nombre de niveaux que l'escalier doit avoir.
- Produit un dessin d'un escalier, avec le motif que vous voyez dans l'image.
La sortie sera au format texte mais les briques peuvent être distinguées les unes des autres. Par exemple, vous pouvez utiliser le caractère «█» comme un demi-bloc et le peindre dans la couleur de votre choix, ou simplement choisir le caractère de votre choix.
Restrictions:
- Les blocs doivent être de trois couleurs différentes, qui seront utilisées aussi longtemps que possible (si l'entrée est 1 ou 2, il n'y a pas assez de blocs pour utiliser les trois couleurs). Si vous le souhaitez, vous pouvez utiliser les caractères «░▒▓», par exemple, ou simplement sélectionner trois caractères différents.
- Deux blocs de la même couleur ou du même motif ne peuvent pas être côte à côte sur une même rangée.
Mon fils ne se soucie pas vraiment des espaces de fuite ou des nouvelles lignes tant qu'un escalier est dessiné.
Exemples (désolé pour le mauvais choix de personnages):
Input: 1
Output:
██
Input: 2
Output:
██
▓▓
Input: 3
Output:
██
▓▓
██░░
Input: 5
Output:
██
██
██░░
██░░
██░░▓▓
Réponses:
Gelée ,
21 1916 octetsUn programme complet imprimant le résultat.
Utilisations
00
,11
et22
que les blocs.Essayez-le en ligne!
Comment?
la source
Python 2 , 55 octets
Essayez-le en ligne!
Cycles entre les blocs de
22, 44
, sauf que la ligne supérieure est00
. Par exemple, sur l'entrée 10, imprimeImprime des rangées de plus en plus longues
i=2,3,..
en créant un espace pour les longueurs impaires, en répétant lesi
temps des motifs et en tranchant jusqu'à la longueuri
. Le modèle est2244
pour toutes les lignes sauf la premièrei=2
pour laquelle il l'est0
. Ceci est réalisé avec l'expression arithmétique2%i*1122
.la source
JavaScript (ES6), 80 octets
Afficher l'extrait de code
JavaScript (ES6), 87 octets
Solution précédente.
la source
SOGL ,
31282725 octetsExplication:
en utilisant cette technique
Exemple de sortie pour 9:
non concurrent, 22 octets
La commande
m
a été documentée lors du 1er commit SOGL , mais pas implémentée.la source
05AB1E ,
2221201817 octetsUtilise le fait intéressant que
4^(N+2)/5 = [3,12,51,204,...] = b[11,1100,110011,11001100,...]
Essayez-le en ligne!
Explication
la source
PHP,
6159fonctionne à peu près comme les versions python mais utilise les trois couleurs si possible. Pas de nouvelle ligne de fuite.
la source
aa<?for...
.Pyth , 29 octets
Testez-le en ligne!
Explications
Je suis sûr qu'il existe de nombreuses façons de raccourcir ce code, mais je suis le roi de la fatigue en ce moment ... J'essaierai plus tard.
la source
Lot, 125 octets
Remarque: enregistrez-le dans CP437 ou CP850 ou un autre. Fonctionne en faisant tourner les couleurs à chaque fois. Comme je ne peux pas mapper la chaîne pour effectuer la rotation, j'utilise quatre remplacements, en utilisant des espaces comme étape temporaire. Cela me permet également de préfixer un espace à chaque ligne, de sorte que deux espaces se transforment en un nouveau bloc. Exemple de sortie:
la source