Diese! ist ein RGB-Farbraster ...
Grundsätzlich handelt es sich um eine zweidimensionale Matrix, in der:
- Die erste Zeile und die erste Spalte sind rot.
- Die zweite Zeile und die zweite Spalte sind grün.
- Die dritte Zeile und die dritte Spalte sind blau.
Hier sind die grafisch beschriebenen Farben mit den Buchstaben R, G und B.
Hier ist, wie wir die Farbe jedes Raumes im Raster berechnen.
- Rot + Rot = Rot (# FF0000)
- Grün + Grün = Grün (# 00FF00)
- Blau + Blau = Blau (# 0000FF)
- Rot + Grün = Gelb (# FFFF00)
- Rot + Blau = Lila (# FF00FF)
- Grün + Blau = Blaugrün (# 00FFFF)
Die Herausforderung
- Schreiben Sie Code, um ein RGB-Farbraster zu generieren.
- Es ist Codegolf, also versuchen Sie es mit der kleinsten Anzahl von Bytes.
- Verwenden Sie eine beliebige Programmiersprache oder Auszeichnungssprache, um Ihr Raster zu generieren.
- Dinge, die mir wichtig sind:
- Das Ergebnis sollte ein RGB-Raster mit den definierten Farben grafisch anzeigen.
- Dinge, die mir egal sind:
- Wenn es sich bei der Ausgabe um ein Bild, HTML, SVG oder ein anderes Markup handelt.
- Die Größe oder Form der Farbblöcke.
- Rahmen, Abstände usw. zwischen oder um die Blöcke.
- Es muss definitiv keine Beschriftung geben, die angibt, welche Zeilen- und Spaltenfarben verwendet werden sollen.
code-golf
graphical-output
AJFaraday
quelle
quelle
Bitmap
Objekt in C #?Antworten:
Bash, 44
Hier sind Blöcke
.
Zeichen.^[
ist ein buchstäbliches ASCII-Escapezeichen (0x1b).Sie können dieses Skript wie folgt neu erstellen:
quelle
printf ${f=\\e[3%dm.}$f$f\\n 1 3 5 3 2 6 5 6 4
printf \\e[3%dm. 1'
In diesem Feld\\e[31m.
wird der ANSI-Escape-Code für Rot usw. und.
das zu druckende Zeichen angegeben.printf "${f=^[[3%dm.}$f$f" 1 3 5 3 2 6 5 6 4
(Wo^[
ist ein buchstäbliches Escape-Zeichen = 1 Byte und  ein buchstäbliches Zeichen für eine neue Zeile = 1 Byte.)8088-Assembly, IBM PC DOS,
4443 BytesAuflistung:
Dies verwendet die IBM PC BIOS-
INT 10H
Videoservices, um das Farbraster auf den Bildschirm zu schreiben. Leider erfordert die einzige Möglichkeit, ein bestimmtes Farbattribut zu schreiben, auch das Schreiben von Code, um den Cursor an der nächsten korrekten Stelle zu platzieren. Daher gibt es viel zusätzlichen Code dafür.Hier ist die Ausgabe, die auf einem IBM PC CGA ausgeführt wird (im 40x25-Textmodus, um sie zu vergrößern).
Laden Sie RGBGRID.COM für DOS herunter und testen Sie es .
quelle
Wolfram Language (Mathematica) , 41 Byte
Wolfram Language (Mathematica) , 68 Byte
Mathematica verfügt über integrierte Funktionen für all diese Farben.
quelle
80386 Maschinencode, IBM PC DOS, 38 Bytes
verhexen:
asm:
skalierte Ausgabe von Dosbox:
quelle
mov al, 13h
korrekt ist, es sei denn, DOSBox garantiert, dass es sichah = 0
am Programmeinstiegspunkt befindet.Excel VBA (Direktfenster), 80 Byte
Excel VBA (Funktion), 96 Bytes
Kein schreckliches Werkzeug für den Job ... Ich schätze die Tatsache, dass Excel bereits ein Raster anzeigt, so dass es darum geht, die Hintergrundfarbe festzulegen.
Wir danken @Neil für den Vorschlag, dass ich 43 Byte einspare,
ColorIndex
anstatt dies zu tunColor
.-21 Bytes dank @Keeta
-16 Bytes dank @Chronocidal für die Empfehlung des "Sofortfensters"
-2 Bytes dank @i_saw_drones
Viele Änderungen von meiner ursprünglichen Einreichung :)
quelle
ColorIndex
könntest es wahrscheinlich besser machen, da das hier eine Zahl von 3 bis 8 ist, die du in eine Zeichenkette oder so etwas kodieren könntest.for i=1 To 3:for j=1 To 3:Cells(i,j).Interior.ColorIndex=Mid("367408005",i*j,1):next j,i
GFA Basic 2.02 (Atari ST), 48 Byte
Eine manuell bearbeitete Liste im .LST-Format. Enthält viele nicht druckbare Zeichen, deren Codes in Klammern angegeben sind.
Das Betriebssystem des Atari ST definiert erweiterte VT52-Befehle, die hier verwendet werden.
Ausgabe
Die Ausgabe ist ein Block mit Pixeln (9 Leerzeichen mit Pixeln).24×24 8×8
Screenshot von Steem SSE
quelle
SVG,
210182 BytesDa die Größe oder Form der Farbblöcke keine Rolle spielt, können mit diesem etwas merkwürdigen Layout einige Bytes abgespielt werden:
quelle
HTML + CSS,
121120 BytesDas schlechteste Stück HTML, das ich je geschrieben habe. Ein Byte weniger dank @Gust van de Wal
HTML + CSS, 114 Bytes (halb gültig)
Ich setze dies als semi-gültig, weil das Blau nicht genau # 0000FF Blau ist und auch darauf beruht, dass nicht auf den Link geklickt wurde.
Vielen Dank an @Lynn für die Idee
quelle
<w>
,<x>
,<y>
, und<z>
.<a href=x>█
wird standardmäßig blau sein, spart Ihnen einige Bytes von CSS :)Ditaa , 118 Bytes
Dies ist die Ausgabe mit der
-E
Option:quelle
R
895048 BytesNeueste Version:
Nicht genügend Elemente im Vektor, um die 3x3-Matrix zu füllen. Daher wird das erste Element umgebrochen und wiederverwendet.
Alte Versionen:
quelle
Excel-VBA,
89737270 ByteBearbeiten: Sie können das Direktfenster verwenden und auf das
Sub
/ verzichtenEnd Sub
, um 16 Bytes zu sparen:Ursprüngliche Antwort:
Dies wurde von Neils Vorschlag zu dieser Antwort inspiriert und ist meine erste Einreichung!
Ergebnis:
-2 Bytes : Entfernen von Zellreihennummern - dank Taylor Scott !
quelle
For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Next
für 70Perl 6 (und wahrscheinlich ähnlich für viele Sprachen) (31 Bytes)
Dabei wird eine kopflose TIFF-Datei ausgegeben, die von Photoshop mit der Dateierweiterung .raw erstellt wurde und, sofern zum Zeitpunkt des Öffnens nicht anders angegeben, quadratisch ist. Das Herumspielen mit der Farbtiefe (falls zulässig) könnte dies weiter reduzieren.
quelle
ffplay (ffmpeg), 93 Bytes
Alt :
quelle
Golf'd:
Ungolf'd:
Bearbeitungen:
Vielen Dank an @flawr für den Hinweis, wie die Farben repariert werden können!
Konnte durch Ersetzen durch abschneiden, was wie folgt aussehen würde:14bytes ▉ ▉ ▉▉▉▉▉▉▉▉▉▉
\rule{5em}{5em}
▉
sieht aber einfach nicht ganz gleich aus.
Könnte wahrscheinlich ein paar Bytes mehr einsparen, wenn Farbnamen gefunden werden, die den beabsichtigten Farben in akzeptabler Weise ähneln.
Nur um zu zeigen, wie eine anständige -Version davon aussehen würde:TEX'd RedGreenBlueRedGreenBlue.
quelle
purple
mitfuchsia
undteal
mitaqua
undgreen
mit ersetzen,lime
dann wären die Dinge, denke ich, richtig.{}
. Aber das würde zu viele Prinzipien der sauberen Codierung für meinen Verstand verletzen. = PLua + LÖVE / Love2D ,
186183 BytesProbieren Sie es online!
Mein erster Code Golf Eintrag!
quelle
t={[0>1]=0,[0<1]=1}
.MATL,
44 23 21 2019 BytesEin direkter Port meiner Octave-Antwort mit den Vorschlägen von @ExpiredData und @LuisMendo.
versuche es online
quelle
Octave / MATLAB ,
57 5640 Bytes-17 Byte dank @ExpiredData! Testen Sie die noch bessere Lösung für Golfer !
Probieren Sie es online!
quelle
Factorio Blueprint String, 705 Bytes
Ich gebe zu, ich gehe nur an die Grenzen dessen, was als Lösung zählt.
Im Spiel erzeugte Ausgabe (niedrige Grafikeinstellungen verwendet):
Um zu beweisen, dass es sich um eine gültige Lösung handelt, müssen Sie dieses Pixelraster abtasten, das genau der Spezifikation entspricht:
Der Rest des Bildes wird als Rand oder Abstand klassifiziert, was, wie in der Frage gesagt, keine Rolle spielt.
quelle
Oktave , 38 Bytes
Probieren Sie es online!
quelle
HTML / CSS,
278141137 Bytes-137 Bytes dank Kommentatoren, vor allem @data
-4 Bytes dank @Einacio
Verwendet Unicode
█
(U + 2588) für die "Blöcke" und verwendet CSS-Klassen / Inline-Stil, um sie einzufärben.Ich denke, dass die
<font>
Tags mehr Golf gespielt werden könnten, aber sie in ein kürzeres Tag zu ändern, wie zum Beispiel<a>
dascolor
Attribut zu brechenquelle
</td>
, der Browser ist intelligent genug, um dieses schließende Tag automatisch hinzuzufügen<td bgcolor=#f00>
<span style="color:red">█<span class=a>█<span class=b>█<br><span class=a>█<span style="color:#0f0">█<span class=c>█<br><span class=b>█<span class=c>█<span style="color:#00f">█
JavaScript,
108102 BytesKein Snippet, da dies nur in einer echten Browser-Konsole und nicht in der Snippet-Konsole funktioniert. Edit: Danke an @AJFaraday für den Screenshot. Erläuterung: Browser ermöglichen es dem ersten Parameter von
console.log
, Ersetzungen einzuschließen. Die%c
Ersetzung übernimmt einen Parameter und wendet ihn als (bereinigtes) CSS an. Jeder█
Block wird daher unter Verwendung der entsprechenden Teilzeichenfolge eingefärbt, dief0ff00f0
als dreistelliger hexadezimaler Farbcode interpretiert wird.quelle
%c
wird verwendet , um eine Format - String zu erstellen, werden die CSS - Stile sind Argumente für den Text , nachdem erff0ff
alle gemischten Farben und00f00
alle reinen Farben enthält. Wenn Sie sie verketten, erhalten Sie doppelte Positionen fürff0
undf00
können das erste und das letzte Zeichen entfernen. Ich habe dann ein kurzes Skript geschrieben, um alle Zeichenfolgen mit 7 Zeichen zu überprüfen, um sicherzustellen, dass 8 optimal ist.HTML (GIF), 108 Byte
Es ist der Kampf der webbasierten Bildformate! (Gibt es TIF- oder JPG-Konkurrenten?)
Antwort von @AC .
HTML (BMP),
116115 BytesAntwort nur mit @ ASCII .
HTML (WebP), 116 Byte
Antwort von @Hohmannfan .
HTML (PNG),
151136135 Bytes-15 Bytes dank @Hohmannfan .
Siehe auch meine CSS- und SVG- Antworten.
quelle
<img src="data:image/bmp;base64,Qk0+AAAAQVNDTxoAAAAMAAAAAwADAAEAGAD/AP///wD/AAAAAAAA//8A/wD//wAAAAAAAP8A////AP8AAAA=">
. 14-Byte-Datei-Header, 12-Byte-Anwendungs-Header, 9 tatsächliche Daten pro Zeile (+3 zum Auffüllen auf ein Vielfaches von 4), ja<img src="data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7">
ist kürzeriVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAFElEQVR4AWP4z8Dw/z8DEIIodB4A4D0O8pOGuTgAAAAASUVORK5CYII=
<img src=data:image/webp;base64,UklGRjYAAABXRUJQVlA4TCoAAAAvAoAAAC8gEEjaH3qN+RcQFPk/2vwHH0QCg0I2kuDYvghLcAoX0f/4Hgc>
dc (auf xterm), 64 bytes
Du bekommst nur ein paar verrückte Escape-Codes anstelle von Farben, aber du kannst es trotzdem online ausprobieren!
Nach meinem Verständnis können die 16 ANSI-Grundfarben frei interpretiert werden, wie das Terminal dies wünscht. Andererseits haben die 216 Farben im xterm-Farbwürfel explizite RGB-Werte. Ich benutze diese Codes und drucke ein Raster von
X
s:Zuerst setzen wir den Eingaberadix mit auf Basis 15
Fi
. Das kostet zwei Bytes, gibt aber drei zurück, also ... einen Nettogewinn von einem Byte (und einen großen Verlust an Lesbarkeit). Als nächstes versuchen wir, unsere Farbwerte auf den Stapel zu bekommen. Im Dezimalformat wäre dies der Fall21 51 201 51 46 226 201 226 196
, aber wir befinden uns im verrückten Modus16 36 D6 36 31 101 D6 101 D1
. Wir entfernen eines der Leerzeichen, indem wir es in ein Makro einfügen, das wir irgendwann definieren müssen[AP]sF
(wodurch einfach ein Zeilenvorschub gedruckt wird). Wir können verkleinern36 D6 36
und101 D6 101
indem wir den ersten Wert auf den Stapel legen, duplizieren, den zweiten platzieren und dann tauschen (36dD6r
,101dD6r
).Makro
M
übernimmt das Drucken und so weiter.1CP
druckt das Escapezeichen. Klammern werden zur Begrenzung von Zeichenfolgen verwendet. Soweit mir bekannt ist, können Zeichenfolgen nicht umgangen werden. Daher müssen wir die Klammern auch mit einem ASCII-Wert ausgeben61P
.[38;5;]P
ist der Code für die Einstellung der Vordergrundfarbe aus der nummerierten Liste.n
druckt den Wert von der Oberseite des Stapels ohne Zeilenumbruch.[mX]P
Beendet den Code und gibt ein 'X' aus.z3%0=F
Überprüft die Stapeltiefe Mod 3 und führtF
bei Bedarf unser Zeilenvorschubmakro aus .z0<M
hältM
laufen, solange es auf dem Stapel Zeug.dsMx
zu rennen.Beachten Sie, dass Ihre Vordergrundfarbe blau bleibt, wenn Sie dies in dc in einem xterm ausführen.
1CP61P74P
(Eingabe im Screenshot gezeigt) sollte dies zurücksetzen.quelle
Block Schildkröte, 45 Blöcke
Probieren Sie es online!
Wie wäre es, wenn wir ein kleines Spiel spielen, um das lächerlichste Werkzeug für den Job zu finden?
Ausgabe:
Das Programm (als Screenshot für zusätzliche Häresie):
Hinweis: Die ausgegrauten Blöcke werden auch für die Metrik gezählt.
quelle
Node.js, 79 Bytes
Erzeugt eine Datei mit dem Namen "P" im PPM-Format, die das Farbraster enthält.
quelle
TI-Basic, x Bytes (wird punkten, wenn ich kann)
Hinweis: Der Inhaltsfilter hindert mich daran, die Tokengrößen für jeden dieser Befehle nachzuschlagen. Wenn jemand für mich punkten will, dann mach mit.
Das sieht auf meinem kleinen Taschenrechnerbildschirm wirklich schlecht aus. Aber hey, Form spielt keine Rolle: ^)
Golf-Ausgabe: Modifiziert für 8x größere Ausgabe:
TI-BASIC, x Bytes
Verwenden von Pxl-On anstelle von Text:
Ausgang: Aufgeblasen ~ 11x:
quelle
TextColor
beispielsweise 2 Bytes und nicht 9, wie Sie es von @NatC ++, SFML, 177 Bytes
Verwendet die
sf::Image::create(int,int,unsigned char*)
Methode, um ein Bild mit RGB-Werten zu erstellenquelle
0xFF0000
als schreiben255<<16
.int b=255<<16,g=65280,r=255,d[]={r,g|r,b|r,g|r,g,b|g,b|r,b|g,b};
C #,
248204198 BytesAusgabe:
quelle
BASIC C64, 106 Bytes
quelle
Wolfram Language (Mathematica), 72 Byte
quelle