Der Umgang mit Farben in Nicht-Markup-Sprachen erschwert die Sache oft. Ich würde gerne einige Variationen davon sehen, wie Farbe in verschiedenen Sprachen verwendet wird.
Ziel dieses Wettbewerbs ist es, 'Hello World' in den sieben Farben des Regenbogens auszugeben.
Laut Wikipedia sind dies die 7 Farben.
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)
Die Regeln
- Das Programm muss 'Hello World' ausgeben. (Muss nicht unbedingt Text sein, muss aber als "Hallo Welt" unterscheidbar sein.)
- Jeder Buchstabe muss eine andere Farbe haben.
- Die Farben können in beliebiger Reihenfolge sein.
- Sie müssen jede der sieben Farben mindestens einmal verwenden. (Sie können mehr als die angegebenen Farben verwenden)
- Auf keinen Fall Markup-Sprachen verwenden .
Der Gewinner ist derjenige, der die geringste Anzahl von Zeichen hat UND die Regeln befolgt
Bonus -1 Zeichen, wenn es in DART geschrieben ist
Ich werde den Gewinner am 11. Januar auswählen (wenn ich mich erinnere; D).
Viel Glück
GEWINNER
Ich habe einen Fehler gemacht D:, Gewinner aktualisiert.
1. Stranac - Python, 60 Zeichen
2 .. Ilmari - Karonen Perl + GD, 146 Zeichen
Kürzeste Länge bei Einhaltung aller Regeln.
Brownie zeigt auf JiminP für die DART-Antwort.
quelle
H
wird das mit dem Escape-Code für Schwarz gedruckt, sodass es auf den meisten Terminals nicht sichtbar ist.Mathematica
Ich weiß, ich weiß, es entspricht nicht den Regeln. Aber ich musste versuchen, mit den Bildverarbeitungsfunktionen von Mathematica zu spielen.
Bildschirmfoto:
quelle
Haskell, 88 Zeichen
Beachten Sie, dass hier ANSI-Terminalfarben verwendet werden, von denen es nur 6 gibt und die möglicherweise nicht genau den angegebenen Farben entsprechen (dies hängt von den Terminaleinstellungen ab). Daher verbiege ich die Regeln hier ein wenig.
Etwas längere Version mit fast korrekten Farben, 107 Zeichen
Diese Version verwendet xterm-Farben anstelle von ANSI-Farben. Dies hängt nicht von benutzerdefinierten Paletten ab und verwendet die nächsten Farben, die ich in der xterm-Palette mit 256 Farben finden konnte.
quelle
Python, 261 Zeichen
Implementiert die Spezifikation genau und generiert ein ppm-Bild. Hier ist das Ergebnis, das in GIF konvertiert und um den Faktor 4 vergrößert wurde:
quelle
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 -> ANSI-Terminal, 53 Zeichen
Dies ergibt genau die gleiche Leistung wie die Haskell-Lösung von Hammar . Es verwendet
say
, benötigt also Perl 5.10+ und den-M5.010
(oder-E
) Schalter. Für ältere perls, ersetzensay
mitprint
. Eine triviale Reduzierung um ein Zeichen könnte durch Ersetzen\e
durch ein wörtliches ESC-Zeichen erreicht werden. Dies würde jedoch das Lesen und Bearbeiten des Codes erheblich erschweren.Bearbeiten: Es wurden zwei Zeichen hinzugefügt, die genau zu Hammars Ausgabe passen und tatsächlich alle sechs möglichen Terminalfarben anzeigen. (In der früheren Version war das einzige Zeichen, das in Farbe 6 = Cyan gedruckt wurde, das Leerzeichen.)
Bildschirmfoto:
Bearbeiten 2: Wenn die Verwendung einer benutzerdefinierten Terminalpalette (und eines Unterstrichs für das Leerzeichen) zulässig ist, kann ich die in der Spezifikation angegebenen exakten Farben mit nur 50 Zeichen problemlos reproduzieren:
Bildschirmfoto:
quelle
Perl -> HTML, 99 Zeichen
Bildschirmfoto:
Der HTML-Code wird wahrscheinlich keine Validatoren bestehen, sollte aber von nahezu allen Browsern verstanden werden. Dieser Code erzeugt nicht genau die von Ihnen aufgelisteten RGB-Farben, kommt jedoch sehr nahe. Insbesondere sind die Farben der Buchstaben:
Die Ausgabe sieht auf schwarzem Hintergrund viel besser aus, aber das explizite Drucken von a
<body bgcolor=black>
hätte mich 28 zusätzliche Zeichen gekostet. Sie können Ihre Browsereinstellungen anpassen, um stattdessen den gleichen Effekt zu erzielen. :-)quelle
Perl + GD, 146 Zeichen
Gemäß den Kommentaren zu meiner anderen Antwort ist hier eine Lösung, die direkt eine Bilddatei unter Verwendung der GD-Bibliothek erstellt:
Und hier ist die Ausgabe:
Auch hier würde die Verwendung eines schwarzen Hintergrunds besser aussehen, mich aber 29 Zeichen kosten (
$m->bgcolor(0,0,0);$m->clear;
).Bearbeiten: Finden Sie heraus, wie Sie 20 Zeichen durch (ab) mithilfe der indirekten Objektnotation und einiger anderer Änderungen rasieren können. Der neue Code gibt eine Warnung aus, läuft aber trotzdem einwandfrei.
quelle
Postscript
155143Dies beruht auf der Fähigkeit von Ghostscript, herauszufinden, dass Palatino für Palatino-Roman steht.
quelle
Einige verschiedene Ansätze, um dies zu tun
Nachsatz
Erstens: Kürzeste ( 89 ):
Nicht Golf:
Dies ändert kontinuierlich die Farbe in x-Richtung unter Verwendung des hsb-Farbraums. (Die Idee, hsb-Farben und kshow zu verwenden, wird luser droog gutgeschrieben - siehe seinen Eintrag!) Es werden nicht die exakten sieben von MrZander angegebenen Farben verwendet.
Wenn ich mich auf MrZanders Farben beschränke, komme ich mit 141 Zeichen dorthin :
Dies codiert den Farbtonwert der MrZander-Farben als ein Byte im druckbaren ASCII-Bereich. Dieses Byte wird durch Subtrahieren von 32 und Teilen durch 166 in einen Farbtonwert im Bereich zwischen 0 und 1 übersetzt. Auf jedes Zeichen der Zeichenfolge "Hello World" folgt sein codierter Farbtonwert.
Nicht Golf:
TODO : Mit den Farben stimmt etwas nicht.
quelle
Einige betrügen aber lösen das Problem
Bash + Ruby (braucht
lolcat
Edelstein)quelle
Dart zu 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++]}"));}
Gibt es eine Möglichkeit, Texte ohne Verwendung der Auszeichnungssprache einzufärben? Ich kann keine Leinwände testen ...
quelle
Ich weiß, dass dort "auf keinen Fall ein Markup" steht, aber ich möchte dieses CSS mit 468 Zeichen einreichen:
Kein Styling erfolgt mit dem Markup.
quelle
Rubin
242 mehr Verfahrensweise:
Wenn es mir gelingt, einen besseren Weg zu finden, um die Farben zu erzeugen, werde ich es tun. Bei einigen der mittleren habe ich nur ein paar Versuche gemacht, um die Farben näher zu bringen.
quelle