Un défi sur le thème du Jour de l'Indépendance Spécial (USA) pour vous aujourd'hui. Vous devez écrire un programme qui imprime cette représentation ascii-art du drapeau américain.
0
|---------------------------------------------------------
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
| * * * * * #################################|
| * * * * * * |
| * * * * * |
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
|---------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Les espaces de fin sur chaque ligne, ainsi qu'une nouvelle ligne de fin, sont autorisés.
Notez que ce n'est pas tout à fait à quoi le drapeau devrait ressembler, mais c'est le plus proche que je pourrais obtenir avec ASCII.
Comme d'habitude, il s'agit de code-golf, donc les failles standard s'appliquent et la réponse la plus courte en octets gagne!
code-golf
ascii-art
kolmogorov-complexity
DJMcMayhem
la source
la source
Réponses:
CJAM,
18412010910176746967646258 octetsEssayez-le en ligne dans l' interpréteur CJam .
Idée
La partie la plus intéressante du drapeau est le motif d'étoiles et de rayures.
Si nous répétons deux espaces et un nombre signe 56 fois et ajoutons une barre verticale à chacun, nous obtenons
En répétant ce motif 7 fois et en rejetant les deux premières lignes, nous obtenons les rayures:
Maintenant, si nous répétons la chaîne
" * "
50 fois et divisons le résultat en morceaux de longueur 22, nous obtenons les étoiles:L'espace est un peu décalé, mais nous pouvons résoudre ce problème en éliminant le dernier morceau et en ajoutant un espace aux autres.
Maintenant, si nous superposons des rayures et des étoiles, nous obtenons
Il ne reste plus qu'à ajouter deux lignes de 57 tirets, à ajouter une colonne de 37 barres verticales et à placer la cerise sur le dessus.
Code
la source
Python 2, 113 octets
Tranchage de cordes et contrôles modulo à gogo.
la source
i=0
est imprimée.Brainf ** k,
3355311315981178782 octetsQuel est ce langage?
Voici la version optimisée à la main avec 28 boucles. Je pense que je suis allé aussi loin que possible.
Voici la course à ideone.com :
Comment cela marche-t-il?
Ce programme utilise 10 emplacements de mémoire:
Ligne 1
+++[>++++<-]
. Le résultat final est que le registre 0 est 0 et le registre 1 est 12."0"
en haut du drapeau!Ligne 2
"|"
(ASCII 124) et le sort."0"
(ASCII 48) en"-"
(ASCII 45) et le sort.Ligne 3
" * "
5 fois." * "
est écrit"#"
pour un total de 32."#"
,"|"
et"\n"
sont écrits.Lignes 4 à 11
Ligne 12
Ligne 13
"#"
8 fois à chaque fois dans la boucle.Ligne 14
Ligne 15
" "
8 fois à chaque fois dans la boucle.Ligne 16
Ligne 17
Ligne 18
Ligne 19
Ligne 20
"|"
et saut de ligne deux fois à chaque fois dans la boucle.la source
/// : 225 caractères
la source
JavaScript ( ES6 ), 153
156En utilisant la chaîne de modèle, il y a 1 nouvelle ligne qui est significative et comptée
Testez l'exécution de l'extrait ci-dessous (étant EcmaScript 6, Firefox uniquement)
Pour être encore plus patriotique, voici la version EcmaScript 5
la source
Rubis,
104102 octetsUtiliser les idées de Ruby de ManAtWork répondre avec permission.
Rubis,
127 121112 octetsChangement des guillemets dans le
?
tableau utilisé au lieu de conditionnel pour la couleur de la bande. utilisé conditionnel au lieu de formule pour la longueur de bande.L'astuce ici est de dessiner les rayures (à la fois rouge /
#
et blanc /space
) à la bonne longueur, puis de les justifier à droite, en remplissant d'étoiles. Ruby'srjust
nous permet de spécifier la chaîne de remplissage, qui alterne entre" * "
et" *"
.Version originale, 127 octets
la source
map
au milieu de la ,puts
mais je ne peux pas l' utiliser lui - même, même si je l' entourent avec des supports:puts((0.18).map{})
. Si vous voyez d'autres améliorations, faites-le moi savoir, ou supprimez votre propre réponse et postez-la ici.rjust
puisse prendre une chaîne et pas seulement un caractère. Dommage que Python ne puisse pas faire ça ...SWI-Prolog, 275 octets
Dans une langue d'origine française, ce qui est un peu approprié
Voir le résultat ici
la source
C,
235211208205203198197 197186 octetsedit: ajout de quelques suggestions de Cool Guy et utilisation de?: pour remplacer certaines instructions if.
edit: suppression de la prévention du débordement \ 0 et utilisation du limiteur de longueur de chaîne dans printf à la place.
edit: retravaillé les deux conditions memset.
edit: déplacé met ("0") à l'intérieur de l'en-tête for pour supprimer son point-virgule.
edit: léger refactoring pour obtenir 11 octets de plus.
la source
|
début de chaque ligne ...i;c(){puts("0");for(;i<37;i++){char b[58]="|";if(i<21){memset(b,!((i-1)%3)?35:32,56);if(i<10)memcpy(b," * * * * * * "+((i%2)?0:2),23);b[56]='|';}if(!i||i==20){memset(b,45,57);}puts(b);}}
45
au lieu de'-'
et35
au lieu de'#'
et32
au lieu de' '