Écrivez un programme ou une fonction qui prend deux entiers positifs, une largeur et une hauteur, et dessine un motif de grille en pied-de-poule ASCII avec ces dimensions en utilisant cette grille de texte 25 × 26 comme cellule de base:
.......#.....#####.......
.......##.....#####......
.......###.....#####.....
.......####.....####.....
.......#####.....###.....
.......######.....##.....
.......#######.....#.....
.......########..........
####################.....
.####################....
..####################...
...####################..
....####################.
.....####################
#.....##############.####
##.....#############..###
###....#############...##
####...#############....#
#####..#############.....
.#####.#############.....
..##################.....
........#####............
.........#####...........
..........#####..........
...........#####.........
............#####........
Donc, si l'entrée était 2,1
la sortie, ce serait:
.......#.....#####..............#.....#####.......
.......##.....#####.............##.....#####......
.......###.....#####............###.....#####.....
.......####.....####............####.....####.....
.......#####.....###............#####.....###.....
.......######.....##............######.....##.....
.......#######.....#............#######.....#.....
.......########.................########..........
####################.....####################.....
.####################.....####################....
..####################.....####################...
...####################.....####################..
....####################.....####################.
.....####################.....####################
#.....##############.#####.....##############.####
##.....#############..#####.....#############..###
###....#############...#####....#############...##
####...#############....#####...#############....#
#####..#############.....#####..#############.....
.#####.#############......#####.#############.....
..##################.......##################.....
........#####....................#####............
.........#####....................#####...........
..........#####....................#####..........
...........#####....................#####.........
............#####....................#####........
Et si l'entrée était 5,4
la sortie serait:
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
- L'argument largeur doit venir en premier. Tous les formats d'entrée raisonnable (par exemple
w,h
,w h
,(w, h)
) est très bien. - Imprimez ou renvoyez le résultat avec un retour à la ligne facultatif.
- Vous pouvez utiliser deux caractères ASCII imprimables distincts à la place de
.
et#
. - Vous pouvez translater la cellule de base verticalement ou horizontalement, comme si elle avait des conditions aux limites périodiques . Ainsi, le coin supérieur gauche de la sortie ne sera pas nécessairement un rectangle de 7 × 8
.
. ( Nouvelle règle! )
Le code le plus court en octets gagne.
En prime, générez une image à la place où chacun .
est un pixel d'une couleur et chacun #
est un pixel d'une autre couleur.
code-golf
ascii-art
kolmogorov-complexity
Loisirs de Calvin
la source
la source
Réponses:
Pyth,
61605549 octetsEssayez-le en ligne: Démonstration
edit 1: Combinez les deux instructions générant la bande et le triangle (voir ci-dessous)
edit 2: N'a pas vu que nous pouvons utiliser des symboles. 5 octets enregistrés Modifier
modifier 3: @ Calvin'sHobbies a permis de traduire l'image de base. Puisque mon approche était basée sur cette idée, cela m'a beaucoup aidé. -6 octets
Et pour le bonus Cookie :
Ce n'est que 2 octets de plus (51 octets) et génère le fichier
o.png
. Pour l'entrée,5\n4
il génère l'image suivante:Explication:
Le motif Houndstooth semble vraiment assez irrégulier. Mais si nous apportons les 7 colonnes de gauche à droite et les 5 premières lignes au fond, nous obtenons un modèle beaucoup plus agréable:
Je produis d'abord le bloc 13x13 en haut à gauche:
Il y a 2 inégalités simples, qui décrivent les deux
#
zones. La bande peut être décrite pary + 1 <= x <= y + 5
et le triangle peut être décrit parx <= y - 5
. J'ai combiné ces deux conditions:+Rm012
Ajoute ensuite 12 zéros à la fin de chaque ligne, pour obtenir le bloc supérieur 25x13.Le bloc inférieur 25x13 est maintenant vraiment simple:
Il ne reste plus qu'à répéter le motif et à l'imprimer
La différence avec le code bonus Cookie :
255
au lieu de1
mjk*Qd
utiliser*RQ
, car je ne veux pas de chaîne.w
enregistre ce tableau 2D dans un fichier (le convertit implicitement en png)la source
CJam,
1067371 octetsImprime
1
et0
au lieu de.
et#
. Essayez-le en ligne dans l' interpréteur CJam .Comment ça marche
Bonus de cookie
imprime un BitMap portable au lieu de l'art ASCII.
Ci-dessous la sortie d'entrée
24 13
, convertie en PNG:la source
Befunge-93 ,
21201967 octetsVoici un befunge de haute qualité, avec une gestion des exceptions pour le débogage!
(Évidemment, c'est encore très jouable. Je voulais juste obtenir une réponse ici pour l'instant)
Donc, cela se compose de différentes parties.
Ceci est juste l'initialiseur, il prend les valeurs et les stocke
Cette section réinitialise le nombre de lignes, afin que nous puissions imprimer une autre image (largeur) côte à côte.
94+2*
calcule 26, le nombre de lignes. De plus, si la hauteur est nulle, le programme se terminera.Cela obtient la largeur de la pile, donc nous savons combien imprimer
Cela ajoute deux valeurs fictives à la pile pour indiquer quand nous avons terminé une opération, ainsi que la ligne (n) sur laquelle nous nous trouvons. Cela ajoute ensuite n valeurs à la pile
Il s'agit d'une section de contrôle qui va à la ligne (26-n). C'est la façon la plus simple de comprendre comment le faire.
Ceci, évidemment, est lu et fera apparaître n'importe quelle ligne lue sur la pile à l'envers. Cela signifie que lorsque nous le retirerons, il s'imprimera correctement.
Cela s'imprimera jusqu'à ce que la pile atteigne un 0, que nous avons laissé plus tôt.
Cela supprime 1 du numéro de la ligne spécifique à imprimer, puis vérifie si c'est zéro ou non. S'il est différent de zéro, nous revenons au quatrième bloc de code.
Cela soustrait 1 de la ligne (n), imprime une nouvelle ligne et retourne au bloc 3
Une fois que toutes les lignes ont été imprimées, cela soustrait une de la hauteur initiale et revient au bloc 2.
Tout le reste du code est soit le flux de contrôle, soit la gestion de la pile. Écrire ce mas plus que je ne le pensais, mais je suis satisfait de son apparence. C'est beaucoup plus golfable, et cela restera probablement un projet pour un autre jour.
2120 -> 1967 : découpage de quelques lignes avec beaucoup d'espaces gaspillés
la source
Perl, 243
(Un octet ajouté pour que le
-n
commutateur récupère l'entrée de stdin.)C'est assez simple - tout ce qu'il fait est de convertir un tableau de 26 nombres hexadécimaux en binaire et de les imprimer le nombre de fois requis.
Exemple:
Contribution:
Sortie:
la source
Rév.1, C,
118115octets9 octets enregistrés grâce à une nouvelle règle permettant la traduction de la cellule. 3 octets enregistrés en utilisant
w*=25
. Le reste du message reste inchangé.Rév 0, C, 127 octets
Cela passe par les caractères, les imprimant un par un.
i%(25*w)||puts("")
insère une nouvelle ligne à la fin de chaque ligne.Ma façon de voir le design est similaire à celle de Jakube, mais j'amène les 8 premières lignes vers le bas et les 5 colonnes de droite vers la gauche pour obtenir la vue suivante. Dans le programme, cette étape est "inversée" par
+20
et+8
dans les expressions pour x et y.En dehors de "l'inversion des couleurs", cela peut sembler très similaire, mais il y a une différence importante: les rayures diagonales correspondent. (Notez que le design original n'a pas de symétrie diagonale car il mesure 25x26.)
L'expression
((y>x^y>x+5^x>y+4)^y/13)+34
produit ce qui suit, où les différents opérateurs de comparaison produisent les bandes, le^y/13
produit le "retournement de couleur" à mi-chemin et+34
prend le nombre résultant0,1
et le propulse dans la plage ASCII34,35
.Le terme est
&y/13==x/13
évalué à faux = 0 dans les quarts supérieur droit et inférieur gauche, produisant la partie carrée du motif comme indiqué précédemment. Notez que parce que le programme diminue, l'origine x = y = 0 est en bas à droite. Ceci est pratique car le carré de#
13 caractères de large tandis que le carré de"
12 caractères seulement.la source
Befunge -93, 968 octets
Oui c'est vrai! Une réponse Befunge concurrente!
Explication demain, lit maintenant. Je dirai cependant que je fais des trucs astucieux en déplaçant quelques flèches de redirection et j'utilise également la propriété de bouclage. Testez-le dans cet interprète en ligne .
la source