Gérer les couleurs dans des langages non balisés complique souvent les choses. J'aimerais voir quelques variations sur la façon dont la couleur est utilisée dans différentes langues.
Le but de ce concours est de produire «Hello World» dans les sept couleurs de l'arc-en-ciel.
Selon Wikipedia, ce sont les 7 couleurs.
Red #FF0000 (RGB: 255, 0, 0)
Orange #FF7F00 (RGB: 255, 127, 0)
Yellow #FFFF00 (RGB: 255, 255, 0)
Green #00FF00 (RGB: 0, 255, 0)
Blue #0000FF (RGB: 0, 0, 255)
Indigo #6600FF (RGB: 111, 0, 255)
Violet #8B00FF (RGB: 143, 0, 255)
Les règles
- Le programme doit produire «Hello World». (N'a pas nécessairement besoin d'être du texte, mais il doit être identifiable comme 'Hello World')
- Chaque lettre doit être d'une couleur différente.
- Les couleurs peuvent être dans n'importe quel ordre.
- Vous devez utiliser chacune des sept couleurs au moins une fois. (Vous pouvez utiliser plus que les couleurs données)
- Aucune utilisation des langages de balisage en tout cas .
Le gagnant est celui qui a le plus petit nombre de caractères ET suit les règles
Bonus -1 caractère s'il est écrit en DART
Je choisirai le gagnant le 11 janvier (si je me souviens bien; D).
Bonne chance
Gagnants)
J'ai fait une erreur D :, mise à jour des gagnants.
1er. stranac - Python, 60 caractères
2e. Ilmari - Karonen Perl + GD, 146 caractères
Longueur la plus courte avec toutes les règles respectées.
Brownie pointe JiminP pour la réponse DART.
la source
H
est imprimé en utilisant le code d'échappement pour le noir, il n'est donc pas visible sur la plupart des terminaux.Mathematica
Je sais, je sais, cela ne respecte pas les règles .. mais j'ai dû essayer de jouer avec les fonctions de traitement d'image de Mathematica.
Capture d'écran:
la source
Haskell, 88 caractères
Notez que cela utilise des couleurs de terminal ANSI, dont il n'y en a que 6 et qu'elles peuvent ne pas correspondre à celles exactes données (cela dépend des paramètres du terminal), donc je plie un peu les règles ici.
Version légèrement plus longue avec des couleurs presque correctes, 107 caractères
Cette version utilise des couleurs xterm au lieu de celles ANSI. Cela ne dépend d'aucune palette personnalisée et utilise les couleurs les plus proches que j'ai pu trouver dans la palette xterm 256 couleurs.
la source
Python, 261 caractères
Implémente exactement la spécification, générant une image ppm. Voici le résultat, converti en gif et agrandi par un facteur 4:
la source
n=255;C=((n,0,0),(n,127,0),(n,n,0),(0,n,0),(0,0,n),(111,0,n),(143,0,n))
Perl -> terminal ANSI, 53 caractères
Cela produit exactement la même sortie que la solution Haskell de Hammar . Il utilise
say
, donc a besoin de perl 5.10+ et du commutateur-M5.010
(ou-E
). Pour les anciennes perles, remplacezsay
parprint
. Une réduction triviale d'un caractère pourrait être obtenue en remplaçant\e
par un caractère ESC littéral, mais cela rendrait le code beaucoup plus difficile à lire et à modifier.Edit: Ajout de deux caractères pour correspondre exactement à la sortie de Hammar et pour afficher les six couleurs de terminal possibles. (Dans la version précédente, le seul caractère imprimé en couleur 6 = cyan était l'espace.)
Capture d'écran:
Edit 2: Si l' utilisation d'une palette de terminaux personnalisée (et d'un trait de soulignement pour l'espace) est autorisée, je peux facilement reproduire les couleurs exactes données dans la spécification avec seulement 50 caractères:
Capture d'écran:
la source
Perl -> HTML, 99 caractères
Capture d'écran:
Le HTML ne passera probablement aucun validateur, mais devrait être compris par à peu près tous les navigateurs. Ce code ne produit pas les couleurs RVB exactes que vous avez répertoriées, mais il se rapproche beaucoup. Plus précisément, les couleurs des lettres sont:
La sortie semble beaucoup plus agréable sur un fond noir, mais imprimer explicitement un
<body bgcolor=black>
aurait coûté 28 caractères supplémentaires. Vous pouvez ajuster les paramètres de votre navigateur pour obtenir le même effet à la place. :-)la source
Perl + GD, 146 caractères
D'après les commentaires de mon autre réponse , voici une solution qui produit directement un fichier image à l'aide de la bibliothèque GD:
Et voici la sortie:
Encore une fois, utiliser un fond noir aurait une meilleure apparence, mais cela me coûterait 29 caractères (
$m->bgcolor(0,0,0);$m->clear;
).Edit: a compris comment raser 20 caractères en (ab) en utilisant la notation d'objet indirect et quelques autres ajustements. Le nouveau code émet un avertissement, mais fonctionne toujours correctement.
la source
Postscript
155143Cela repose sur la capacité de Ghostscript à "comprendre" que Palatino est l'abréviation de Palatino-Roman.
la source
Quelques approches différentes pour le faire avec
PostScript
Premier: le plus court ( 89 ):
Non golfé:
Ceci change continuellement la couleur dans la direction x en utilisant l'espace colorimétrique hsb. (L'idée d'utiliser les couleurs hsb et kshow est attribuée à luser droog - voir son entrée!) Il n'utilise pas les sept couleurs exactes données par MrZander.
Lorsque je me limite aux couleurs de MrZander, j'y arrive en utilisant 141 caractères:
Cela code la valeur de teinte des couleurs de MrZander comme un octet dans la plage ASCII imprimable. Cet octet est traduit en une valeur de teinte comprise entre 0 et 1 en soustrayant 32 et en divisant par 166. Chaque caractère de la chaîne "Hello World" est suivi de sa valeur de teinte codée.
Non golfé:
TODO : Quelque chose ne va pas bien avec les couleurs.
la source
Certains trichent mais résolvent le problème
Bash + Ruby (nécessite une
lolcat
gemme)la source
Fléchir au HTML,
135134-1 = 133main(){for(var s="Hello World",i=0;i<11;print("<font color=#${'F00F60FB0FF06F00F00B606B00F60F90F'.substring(i*3,i*3+3)}>${s[i++]}"));}
Existe-t-il un moyen de colorer des textes sans utiliser de langage de balisage? Je ne peux pas tester les toiles ...
la source
Je sais qu'il dit "pas de balisage en tout cas", mais je voudrais soumettre ce CSS en 468 caractères:
Aucun style n'est fait avec le balisage.
la source
Rubis
242 manière plus procédurale:
Si je parviens à penser à une meilleure façon de générer les couleurs, je le ferai. Quelques-unes des moyennes, je viens de faire quelques essais et erreurs pour obtenir des couleurs proches.
la source