Nehmen Sie einfach dieses Bild und fügen Sie jeder hexadezimalen Ziffer eine Farbe hinzu. Zum Beispiel #49de5f
würde #5aef60
(mit der 9
Schleife zu einem a
, und die f
Schleife zu einem 0
.)
Dies würde auch bedeuten, dass alles Weiße ( #ffffff
) zu Schwarz ( #000000
) wird, da alle f
Schleifen zurück zu 0
, aber alles Schwarze wird zu einem helleren Schwarzton ( #111111
).
Die Bewertung basiert auf der geringsten Anzahl verwendeter Bytes, da dies eine Code-Golf- Frage ist.
Verwenden Sie das folgende Bild als Eingabebild für Ihren Code und geben Sie das Ausgabebild Ihres Codes in Ihre Antwort ein.
Wenn Sie möchten, können Sie auch dieses andere Regenbogenbild verwenden:
ef
Bytes enthält (was anders sein solltef0
als00
wenn man nur 17 addiert und Mod 256 nimmt).Antworten:
Pyke,
1713 BytesProbieren Sie es hier aus!
Übernimmt Eingaben als ein ganzzahliges 3D-Array von Pixeln und Ausgaben im gleichen Format
quelle
Mathematica, 78 Bytes
Nimmt ein Bildobjekt auf und gibt es zurück (um ein Bildobjekt zu erstellen, fügen Sie das Bild einfach in Mathematica ein).
Ergebnis für den Testfall:
Die Eingabe und Rückgabe der Ausgabe als 3D-Array von ganzzahligen Kanalwerten reduziert sich auf 51 Byte :
Aber diese Meta-Posts haben noch keinen überwältigenden Support, deshalb werde ich vorerst die 78-Byte-Version verwenden.
quelle
Verilog, 220 Byte:
Derzeit ist nicht klar, wie die Dimensionen bereitgestellt werden sollen und ob das Array auf einmal gestreamt oder bereitgestellt werden soll. Ich streame es 8 Bit auf einmal mit einem Taktsignal (mit einem Valid-Data-Flag, das nach der Verarbeitung des gesamten Bildes auf LOW geht) und gebe die Dimensionen als 32-Bit-Ganzzahlen ein / aus:
quelle
Python, 226 Bytes
Jetzt ist es gültig!
Verwenden Sie die Pillow-Bibliothek.
Ausgabe:
Vielen Dank an @TuukkaX für das Speichern von 9 Bytes!
Vielen Dank an @ mbomb007 für das Speichern von 18 Bytes!
quelle
0xFF
statt zu verwenden255
?0xFF
: Dfrom PIL import*
. Ich denke auch, dassImage.open
das gleich danach geändert werden kannopen
.from PIL import*
, aber ich kann nicht ändern dieImage.open
Dyalog APL ,
2115 BytesIch gehe davon aus, dass die Ausgabe im selben Format erfolgen kann.
Neue Lösung nimmt Wertematrix [[ r , g , b , r , g , b ], [ r , g , b ,…
Erläuterung
⎕
numerische Eingabe16 16⊤
in zweistellige Basis 16 umwandeln lassen1+
1 addieren, dh 0 → 1, 1 → 2, 15 → 1616|
Modul 16, dh 16 → 016⊥
von Basis 16 umwandelnBeispiel
Die alte 21-Byte-Lösung verwendet eine Matrix aus [["RRGGBB", "RRGGBB"], ["RRGGBB", ...].
Needs
⎕IO←0
, was bei vielen Systemen Standard ist.Erläuterung
{
…}¨
Für jeden RGB-String mit 6 Zeichen stellen Sie ihn wie⍵
folgt dar:n←⎕D,⎕A
Weisen Sie n⍵⍳⍨
Suchindizes der einzelnen Zeichen in n "0… 9A… Z" zu , und1+
fügen Sie dem Index einen hinzu, dh 0 → 1, 1 → 2, 15 → 1616|
Modul 16, dh 16 → 0n[
…]
verwenden Sie das, um in n zu indexierenBeispiel
quelle
C -
1141137066617267 BytesHier ist der Code (mit Unterstützung für Martin Enders Testfall (ohne 60b)):
Und hier ist weniger verschleierte Version:
Kompilieren und ausführen mit
gcc -o color colorgolf.c && cat a.bmp | ./color > b.bmp
Dieser Code unterstützt die Arbeit mit Bitmaps . Um
png
Dateien zu konvertierenbmp
, habe ich folgenden Befehl verwendet:convert -flatten -alpha off png.png a.bmp
Der Code geht davon aus, dass der
bmp
Header 54 Byte lang ist - in diesem Fall funktioniert das, aber ich bin mir nicht sicher, ob ich nicht diskret etwas kaputt mache.Auch das ist der Regenbogen:
quelle
Java 142 Bytes
Golf gespielt:
quelle
i
sowohl als Parameter als auch in der for-Schleife, so dass ich den Parameter in etwas anderes wie ändern würdea
. Sie können auch noch mehr Golf spielen, indem Sie dieint
vor der entfernenj
und sie der hinzufügenint i
. So wie diese:BufferedImage t(BufferedImage a){for(int i=-1,j;++i<a.getWidth();)for(j=-1;++j<a.getHeight();)a.setRGB(i,j,a.getRGB(i,j)+1118481);return a;}
. Schauen Sie sich auch diesen Beitrag an: Tipps zum Golfen in Java . :)R, 302 Bytes
Bei weitem nicht perfekt, aber hier geht:
Erläuterung:
quelle