Erzeugen Sie ein RGB-Farbraster


47

Diese! ist ein RGB-Farbraster ...

Grundlegendes RGB-Raster

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.

Zeilen- und Spaltendiagramm

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.

2
Können wir ein in unserer Sprache vorkommendes Magierobjekt ausgeben, zum Beispiel ein BitmapObjekt in C #?
Verkörperung der Ignoranz

1
@EmbodimentofIgnorance klingt gut für mich.
AJFaraday,

11
Ich warte auf die Lösung in Piet
Manassehkatz

4
@manassehkatz Ist es nur möglich, dass das Hardcodieren der Daten besser wäre, als sie auszuführen?
AJFaraday,

3
Nicht, dass es wirklich wichtig wäre, aber ich persönlich hätte Cyan und Magenta anstelle von Türkis und Lila (oder irgendetwas anderem) verwendet. Soweit ich weiß, sind dies die offiziellen Begriffe, die im Druck oder in subtraktiven Farbmodellen wie CMYK verwendet werden .
Arnauld

Antworten:


34

Bash, 44

  • 2 Bytes dank @NahuelFouilleul gespart
  • 2 Bytes gespart dank @manatwork
printf "${f=^[[3%dm.}$f$f
" 1 3 5 3 2 6 5 6 4

Hier sind Blöcke .Zeichen. ^[ist ein buchstäbliches ASCII-Escapezeichen (0x1b).

Bildbeschreibung hier eingeben

Sie können dieses Skript wie folgt neu erstellen:

base64 -d <<< cHJpbnRmICIke2Y9G1szJWRtLn0kZiRmCiIgMSAzIDUgMyAyIDYgNSA2IDQ= > rgbgrid.sh

11
was zum Teufel? bitte erklären :)
flawr

1
Mit der Shell-Erweiterung können 2 Bytes gespart werdenprintf ${f=\\e[3%dm.}$f$f\\n 1 3 5 3 2 6 5 6 4
Nahuel Fouilleul,

1
Dieser hat meinen Tag wirklich aufgehellt, danke!
AjFaraday

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.
Fredrik Pihl

3
Fahren Sie mit @ NahuelFouilleuls Vorschlag fort und zitieren Sie ihn doppelt: 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.)
manatwork

26

8088-Assembly, IBM PC DOS,  44  43 Bytes

Auflistung:

BE 0122     MOV  SI, OFFSET CTBL    ; load color bar table into [SI]
        LOOP_COLOR: 
B9 0001     MOV  CX, 1              ; display 1 char and clear CH (changed by INT 10H:3)
AC          LODSB                   ; load next color byte 
8A D8       MOV  BL, AL             ; move new color to BL
3C 10       CMP  AL, 010H           ; if this is third color in row: SF=0, CF=0 
                                    ; else if last color: SF=1, CF=0
                                    ; else continue on same row: CF=1
B8 09DB     MOV  AX, 09DBH          ; AH=9 (write char with attr), AL=0DBH (a block char) 
CD 10       INT  10H                ; call PC BIOS, display color block
B4 03       MOV  AH, 3              ; get cursor position function
CD 10       INT  10H                ; call PC BIOS, get cursor
72 04       JC   NEXT_COL           ; if not last in row, move to next column 
78 09       JS   EXIT               ; if last color, exit 
B2 FF       MOV  DL, -1             ; otherwise move to first column and next row 
        NEXT_COL:
42          INC  DX                 ; move to next column (and/or row)
B4 02       MOV  AH, 2              ; set cursor position function 
CD 10       INT  10H                ; call PC BIOS, set cursor position
EB E2       JMP  LOOP_COLOR         ; loop to next color byte 
        EXIT:
C3          RET                     ; return to DOS
CTBL    DB  0CH, 0EH, 1DH, 0EH, 0AH, 1BH, 0DH, 0BH, 91H ; color table

Dies verwendet die IBM PC BIOS- INT 10HVideoservices, 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).

Bildbeschreibung hier eingeben

Laden Sie RGBGRID.COM für DOS herunter und testen Sie es .


1
Funktioniert das in dos, prib nicht aber wäre cool wenn es geht.
Marschall Handwerk

@marshalcraft Ja, tatsächlich funktioniert dies nur unter DOS oder mit einem DOS-Emulator wie DOSBox, pcjs.org usw. Ich habe einen Link zum Herunterladen der ausführbaren Datei hinzugefügt, damit Sie es ausprobieren können.
640 KB,

Windows wird mit einem eingeschränkten DOS-Emulator ausgeliefert, der wahrscheinlich jetzt als Eingabeaufforderung bezeichnet wird. Ich hätte wahrscheinlich sagen sollen, dass dies cool wäre, wenn es mit cmd oder PowerShell funktionieren würde. Haha.
Marschall Handwerk

1
@marshalcraft Sie haben Recht, da es sich jedoch um eine 16-Bit-ausführbare Datei für DOS handelt. Wenn Sie eine 32-Bit-Version von Windows verwenden, sollte sie tatsächlich ausgeführt werden, da sie über eine 16-Bit-Laufzeitumgebung verfügt. Eine 64-Bit-Edition von Windows wird jedoch nicht ausgeführt, da sie nur eine 32-Bit-Laufzeit hat.
640 KB,

1
Gott, das ist eine coole Antwort
Samy Bencherif


18

80386 Maschinencode, IBM PC DOS, 38 Bytes

verhexen:

B0 13 CD 10 68 00 A0 1F 66 C7 06 00 00 28 2C 24
00 66 C7 06 40 01 2C 30 34 00 66 C7 06 80 02 24
34 20 00 CD 16 C3

asm:

mov al,13h
int 10h ; initialize vga 13h mode (320x200x256 colors)
push 0a000h
pop ds ; push video buffer address to ds
mov dword ptr ds:0, 242c28h ; print 3 pixels
mov dword ptr ds:320, 34302ch ; print 3 pixels
mov dword ptr ds:640, 203424h ; print 3 pixels
int 16h ; wait for any keypress
ret ; exit to os

skalierte Ausgabe von Dosbox:

Bildbeschreibung hier eingeben


Beachten Sie, dass dies nicht mov al, 13hkorrekt ist, es sei denn, DOSBox garantiert, dass es sich ah = 0am Programmeinstiegspunkt befindet.
Margaret Bloom

@MargaretBloom axe ist 0 beim Start der com-Anwendung in ms dos
Iłya Bursov

Danke Iłya, das ist gut zu wissen!
Margaret Bloom

18

Excel VBA (Direktfenster), 80 Byte

For i=1To 9:Cells(i Mod 3+1,(i+1)/3).Interior.ColorIndex=Mid(673486857,i,1):Next

Excel VBA (Funktion), 96 Bytes

Sub g()
For i=1To 9
Cells(i Mod 3+1,(i+1)/3).Interior.ColorIndex=Mid(673486857,i,1)
Next
End Sub

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.

Excel-Farbraster

Wir danken @Neil für den Vorschlag, dass ich 43 Byte einspare, ColorIndexanstatt dies zu tun Color.

-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 :)


1
Du ColorIndexkö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.
Neil

@Neil - In der Tat :) Ich konnte es damit ein bisschen kürzer machen. Danke für den Tipp.
Dana

Ich habe nichts gesehen, das Sie davon abhält, dies in Sub F () und End Sub zu ändern, um weitere Einsparungen zu erzielen.
Keeta

1
Machen Sie es nicht zu einer Funktion und führen Sie dies im for i=1 To 3:for j=1 To 3:Cells(i,j).Interior.ColorIndex=Mid("367408005",i*j,1):next j,i
Direktfenster aus

1
Sie können auch Anführungszeichen aus der Zeichenfolge entfernen. VBA wandelt die Zahl automatisch in eine Zeichenfolge um.
i_saw_drones

16

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.

?"[ESC]c[SOH] [ESC]c[ETX] [ESC]c[ENQ] "[CR]
?"[ESC]c[ETX] [ESC]c[STX] [ESC]c[ACK] "[CR]
?"[ESC]c[ENQ] [ESC]c[ACK] [ESC]c[EOT] "[CR]

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×248×8

Ausgabe

Screenshot von Steem SSE


+1 für mich alle nostalgisch für meine treue alte ST.
Wossname

16

SVG, 210 182 Bytes

<svg><path d="h3v3h-3" fill=#f0f/><path d="h2v2h-2" fill=#ff0/><path d="m1 1h2v2h-2" fill=#0ff/><line x2=1 stroke=red/><path d="m1 1h1v1h-1" fill=#0f0/><path d="m2 2h1v1" fill=#00f/>

Da die Größe oder Form der Farbblöcke keine Rolle spielt, können mit diesem etwas merkwürdigen Layout einige Bytes abgespielt werden:

SVG-Layout


Der Einfallsreichtum dieser Lösung gefällt mir sehr gut.
AJFaraday,

16

HTML + CSS, 121 120 Bytes

Das schlechteste Stück HTML, das ich je geschrieben habe. Ein Byte weniger dank @Gust van de Wal

b{color:#ff0}a{color:cyan}i{color:lime}u{color:blue
<pre><body bgcolor=#f0f text=red><b>█
█<i><a>█
 █<u>

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

b{color:#ff0}i{color:lime}c{color:cyan
<pre><body bgcolor=#f0f text=red><b>█
█<i><c>█
 █<a href=x>


3
Sie können die letzte schließende Klammer im CSS weglassen. Auch unglaubliche (und widerliche) Arbeit!
Gust van de Wal

3
Sie können den Tag - Namen ändern , um die Standard - CSS - Formatierung, zum Beispiel zu vermeiden <w>, <x>, <y>, und <z>.
darrylyeo

1
<a href=x>█wird standardmäßig blau sein, spart Ihnen einige Bytes von CSS :)
Lynn

15

Ditaa , 118 Bytes

/----+----+----\
|cF00|cFF0|cF0F|
+----+----+----+
|cFF0|c0F0|c0FF|
+----+----+----+
|cF0F|c0FF|c00F|
\----+----+----/

Dies ist die Ausgabe mit der -EOption:

Bildbeschreibung hier eingeben


13

R 89 50 48 Bytes

Neueste Version:

image(matrix(c(6,4,5,2:4,1,2),3),col=rainbow(6))

Nicht genügend Elemente im Vektor, um die 3x3-Matrix zu füllen. Daher wird das erste Element umgebrochen und wiederverwendet.

Alte Versionen:

image(matrix(c(6,4,5,2:4,1,2,6),3),col=rainbow(6))

image(matrix(c(3,5,6,2,4,5,1:3),3),col=c('red','yellow','magenta','green','cyan','blue'))

Bildbeschreibung hier eingeben


3
Willkommen bei PPCG!
Verkörperung der Ignoranz

1
wow, es ist Rainbow Six !
Yong Quan

@alephalpha Huch, ich kann nicht glauben, dass ich das verpasst habe. Ich ging voran und
reparierte

12

Excel-VBA, 89 73 72 70 Byte

Bearbeiten: Sie können das Direktfenster verwenden und auf das Sub/ verzichten End Sub, um 16 Bytes zu sparen:

For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Next

Ursprüngliche Antwort:

Sub a()
For i=1To 9
[A1:C3].Cells(i).Interior.ColorIndex=Mid(367648785,i,1)
Next
End Sub

Dies wurde von Neils Vorschlag zu dieser Antwort inspiriert und ist meine erste Einreichung!

Ergebnis:

Ergebnisraster

-2 Bytes : Entfernen von Zellreihennummern - dank Taylor Scott !


3
Willkommen bei PPCG!
Johan du Toit

1
Danke! Hoffentlich lerne ich ein paar Tricks von den Meistern :)
i_saw_drones

For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Nextfür 70
Taylor Scott

11

Perl 6 (und wahrscheinlich ähnlich für viele Sprachen) (31 Bytes)

{'ÿ   ÿÿÿ ÿ ÿÿ  ÿ ÿÿÿ ÿ ÿÿ  ÿ'}   # replace spaces with ASCII 00
                                  # which I can't seem to enter

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.


11

ffplay (ffmpeg), 93 Bytes

ffplay -f rawvideo -s 3x3 -pix_fmt rgb24 "data:/;base64,/wAA//8A/wD///8AAP8AAP///wD/AP//AAD/"

Alt :

ffplay -f lavfi -i testsrc=s=3x3,geq=r=255*not(X*Y):g=255*not((X-1)*(Y-1)):b=255*not((X-2)*(Y-2))

10

TEX(MathJax), 122bytes

Golf'd:

$\def\c#1{\color{#1}{\rule{5em}{5em}}}\c{red}\c{yellow}\c{fuchsia}\\\c{yellow}\c{lime}\c{aqua}\\\c{fuchsia}\c{aqua}\c{blue}$

Ungolf'd:

$$
\def\coloredBox#1{\color{#1}{\rule{5em}{5em}}}
\coloredBox{red}
\coloredBox{yellow}
\coloredBox{fuchsia} \\
\coloredBox{yellow}
\coloredBox{lime}
\coloredBox{aqua}    \\
\coloredBox{fuchsia}
\coloredBox{aqua}
\coloredBox{blue}
$$

Bearbeitungen:

  1. Vielen Dank an @flawr für den Hinweis, wie die Farben repariert werden können!

  2. Konnte durch Ersetzen durch abschneiden, was wie folgt aussehen würde:14bytes\rule{5em}{5em}

    sieht aber einfach nicht ganz gleich aus.

  3. Könnte wahrscheinlich ein paar Bytes mehr einsparen, wenn Farbnamen gefunden werden, die den beabsichtigten Farben in akzeptabler Weise ähneln.

  4. Nur um zu zeigen, wie eine anständige -Version davon aussehen würde:TEX'd

    RedGreenBlueRedGreenBlue.


1
Ich denke, deine Farben stimmen nicht. Aber abgesehen davon würde ich Ihren Beitrag positiv bewerten, wenn auch nur um den Titel :)
flawr

@flawr Ja, sie sehen anders aus als die in der Fragestellung, aber ich habe mir gedacht, dass diese Farben auf diese Weise anhand der in der Fragestellung angegebenen Namen wiedergibt. Hoffentlich ist es nah genug. = PTEX
Nat

1
Es scheint, dass Mathjax die CSS-Farbnamen verwendet. Sie könnten also purplemit fuchsiaund tealmit aquaund greenmit ersetzen, limedann wären die Dinge, denke ich, richtig.
Fehler

Nur um es festzuhalten: Das oben Genannte könnte ein bisschen mehr Golf gespielt werden, indem einige entfernt werden {}. Aber das würde zu viele Prinzipien der sauberen Codierung für meinen Verstand verletzen. = P
Nat

5
Beachten Sie nur, dass die PPCG-Community nie für ihre geistige Gesundheit berühmt war. Wenn irgendetwas wahrscheinlich für das Fehlen davon.
Fehler

10

Lua + LÖVE / Love2D , 186 183 Bytes

t={[0>1]=0,[0<1]=1}l=love g=l.graphics function l.draw()for i=1,3 do for j=1,3 do g.setColor(t[i<2 or j<2],t[i==2 or j==2],t[i>2 or j>2])g.rectangle('fill',j*10,i*10,10,10)end end end

Probieren Sie es online!

Bildbeschreibung hier eingeben

Mein erster Code Golf Eintrag!


1
Willkommen bei Code Golf! Gute Arbeit!
AjFaraday

1
Ich glaube , Sie Ausdrücke in seiner Wahrheitstabelle verwenden: t={[0>1]=0,[0<1]=1}.
Handarbeit

1
@manatwork Smart!
Sheepolution

noch ein löver, schön dich hier zu sehen
lycea

10

MATL, 44 23 21 20 19 Bytes

Ein direkter Port meiner Octave-Antwort mit den Vorschlägen von @ExpiredData und @LuisMendo.

126973007Bo7B3*e0YG

versuche es online


9

Octave / MATLAB , 57 56 40 Bytes

-17 Byte dank @ExpiredData! Testen Sie die noch bessere Lösung für Golfer !

image(reshape(de2bi(126973007),[3,3,3]))

Probieren Sie es online!


1
Funktioniert nur das Bild anstelle von imshow? Sie haben noch keine Matlab mehr lizenzieren , und ich bin am Telefon so kann es nicht testen
Expired Daten

2
@ExpiredData Vielen Dank, das funktioniert in der Tat!
Fehler

2
Das können Sie wahrscheinlich auch. Probieren Sie es online aus!
Abgelaufene Daten

1
@ExpiredData --- Sehr schöner Trick, vielen Dank! :) --- warum postest du das nicht als eigene antwort?
Fehler

3
Ok, das werde ich tun
Abgelaufene Daten

9

Factorio Blueprint String, 705 Bytes

Ich gebe zu, ich gehe nur an die Grenzen dessen, was als Lösung zählt.

0eNrdWNGOqyAQ/ReedeNo0daH/ZHNTYOW7ZJFNAi91zT99wua7ZpdaaT1pb40oQ6HOecwA3pGBde0kUwolJ8RK2vRovztjFp2FITb/1TXUJQjpmiFAiRIZUdtzYkMGyIoR5cAMXGg/1AOlz8BokIxxegA0w+6vdBVQaUJuAKQstSV5kTV0qA2dWvm1MKuZ3FecIA6lIf4BV8uwS+YeDKPXzBhPKAkUxjJPAy4AbG5QljZFBEqLOuqYGKa1Vc6YAQzE5Ss+b6gH+TETLQJeWdcUemQ/8Sk0oSPHOgjQkkPqMfT1kEYWzEsI2hpc2gtFtgfO2NkDTMjbIKnCOLv1SrCechJ1UzwSm7zKpksNVN78+xwnffOZKv2s2kS0akPJo4D10FslEd2UDVE9oLn6NU+1i01S/HaKqmkpvNl2DhkSGfJEK1Eha1DhWyWCmvZCzuHCtu7aj5asuQ7ynn99/GqT0f07BjAwXnnx3kohEW7XMPE5+OEs5+EUwdhiL4T0IVh3LNzHlMwfUoB+LTPeK19A2LPkoGbety1f46SUvH4BoLExTHxOCKe3mmIXTJ43ogGp5MlnS47soTR+GeryFyUscex+PzOu65IkPr0OrzW2wFkHn0Ar3c3eN6S4pt63NUH7GvtAn3AafTOo+yf3+jhbDcv9/1XgHz00SBAJ+NNn3uWRJDiDcDWXIf+Aya7oEk=

Im Spiel erzeugte Ausgabe (niedrige Grafikeinstellungen verwendet):

Bildbeschreibung hier eingeben

Um zu beweisen, dass es sich um eine gültige Lösung handelt, müssen Sie dieses Pixelraster abtasten, das genau der Spezifikation entspricht:

Bildbeschreibung hier eingeben

Der Rest des Bildes wird als Rand oder Abstand klassifiziert, was, wie in der Frage gesagt, keine Rolle spielt.



8

HTML / CSS, 278 141 137 Bytes

r{color:red}y{color:#ff0}m{color:#f0f}g{color:#0f0}c{color:#0ff}l{color:#00f
<pre><r><y><m><y><g><c><m><c><l>

-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>das colorAttribut zu brechen


1
Lassen Sie es aus </td>, der Browser ist intelligent genug, um dieses schließende Tag automatisch hinzuzufügen
Ferrybig

3
Wenn Sie veraltete Elemente verwenden, können Sie die Hintergrundfarbe einer Zelle auch mit<td bgcolor=#f00>
Ferrybig,

2
Vielleicht eine kleine Frage, aber können Sie es nicht vermeiden, die Tabelle zu verwenden und einfach das █ auszudrucken und mit <br> in eine neue Zeile zu wechseln?
Frarugi87

1
@ frarugi87 yes - 235 total:<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">█
Nur ASCII

1
@ Nur ASCII b {color: # ff0} u {color: # f0f} i {color: # 0ff} <pre> <font color = red> █ <b> █ <u> █ <b> █ <font color = lime> █ <i> █ <u> █ <i> █ <font color = blue> █
Daten

7

JavaScript, 108 102 Bytes

console.log(`%c█%c█%c█
`.repeat(3),...[...`320251014`].map(c=>`color:#`+`f0ff00f0`.substr(c,3)))

Kein 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 %cErsetzung übernimmt einen Parameter und wendet ihn als (bereinigtes) CSS an. Jeder Block wird daher unter Verwendung der entsprechenden Teilzeichenfolge eingefärbt, die f0ff00f0als dreistelliger hexadezimaler Farbcode interpretiert wird.

Beispiel für die Codeausführung


1
Ich verstehe nicht, wie das funktioniert?
Marschall Handwerk

1
@marshalcraft %cwird verwendet , um eine Format - String zu erstellen, werden die CSS - Stile sind Argumente für den Text , nachdem er
ASCII-only

1
Das ist also im Grunde wie DOS-Versionen, aber mit Chrome-Browser?
Marschall Handwerk

1
Nur neugierig, aber wie sind Sie darauf gekommen, die kürzestmögliche Kette von fs / 0s zu finden?
Marie

2
@ Marie Ich begann mit der Feststellung, dass ff0ffalle gemischten Farben und 00f00alle reinen Farben enthält. Wenn Sie sie verketten, erhalten Sie doppelte Positionen für ff0und f00kö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.
Neil

7

HTML (GIF), 108 Byte

Es ist der Kampf der webbasierten Bildformate! (Gibt es TIF- oder JPG-Konkurrenten?)

Antwort von @AC .

<img src=data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7>


HTML (BMP), 116 115 Bytes

Antwort nur mit @ ASCII .

<img src=data:image/bmp;base64,Qk0+AAAAQVNDTxoAAAAMAAAAAwADAAEAGAD/AP///wD/AAAAAAAA//8A/wD//wAAAAAAAP8A////AP8AAAA>


HTML (WebP), 116 Byte

Antwort von @Hohmannfan .

<img src=data:image/webp;base64,UklGRjYAAABXRUJQVlA4TCoAAAAvAoAAAC8gEEjaH3qN+RcQFPk/2vwHH0QCg0I2kuDYvghLcAoX0f/4Hgc>


HTML (PNG), 151 136 135 Bytes

-15 Bytes dank @Hohmannfan .

<img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAFElEQVR4AWP4z8Dw/z8DEIIodB4A4D0O8pOGuTgAAAAASUVORK5CYII>


Siehe auch meine CSS- und SVG- Antworten.


3
Gute Idee, aber .. Es scheint mir, dass eine 89-Byte-Datei für ein 9-Pixel-Bild ein bisschen zu viel ist. Möglicherweise kann das manuelle Schreiben eines BMP-Headers Abhilfe schaffen. Wenn ich mich nicht falsch, ist der absolute Minimum - Header 26 Bytes, plus 12 der Ist - Daten (3 Reihen von 4 Pixel) kann das Bild Verschlankung bis 38 Bytes, die in Base64 Mitteln 51 oder 52 Zeichen anstatt 119
frarugi87

2
118: <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
ASCII

2
Ich habe nicht gezählt, aber ich vermute, das <img src="data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7">ist kürzer
AC

2
Hier ist eine PNG-Datei, die 15 Bytes kleiner ist, wenn base64 codiert:iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAFElEQVR4AWP4z8Dw/z8DEIIodB4A4D0O8pOGuTgAAAAASUVORK5CYII=
Hohmannfan

2
Um den Formatkampf fortzusetzen, gibt es hier eine verlustfreie WebP-Lösung. Ich kann es nicht mehr kürzen, ohne die Spezifikation zu verletzen, so dass es von BMP mit 116 Bytes knapp übertroffen wird. <img src=data:image/webp;base64,UklGRjYAAABXRUJQVlA4TCoAAAAvAoAAAC8gEEjaH3qN+RcQFPk/2vwHH0QCg0I2kuDYvghLcAoX0f/4Hgc>
Hohmannfan

6

dc (auf xterm), 64 bytes

Fi16[AP]sF36dD6r31 101dD6rD1[1CP61P[38;5;]Pn[mX]Pz3%0=Fz0<M]dsMx

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 Xs:

Buncha bunte 'X'

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 Fall 21 51 201 51 46 226 201 226 196, aber wir befinden uns im verrückten Modus 16 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 verkleinern 36 D6 36und 101 D6 101indem 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. 1CPdruckt 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 ausgeben 61P. [38;5;]Pist der Code für die Einstellung der Vordergrundfarbe aus der nummerierten Liste. ndruckt den Wert von der Oberseite des Stapels ohne Zeilenumbruch. [mX]PBeendet den Code und gibt ein 'X' aus. z3%0=FÜberprüft die Stapeltiefe Mod 3 und führt Fbei Bedarf unser Zeilenvorschubmakro aus . z0<Mhält Mlaufen, solange es auf dem Stapel Zeug. dsMxzu 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.


6

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:

Die glorreiche Ausgabe dieses glorreichen Stücks beschissener Programmierung

Das Programm (als Screenshot für zusätzliche Häresie):

Das Programm als Screenshot für zusätzliche Häresie

Hinweis: Die ausgegrauten Blöcke werden auch für die Metrik gezählt.


1
Ich würde es lieben, wenn dies eine Standard-PCG-Herausforderung wäre! Stattdessen passiert es organisch bei einigen Code-Golf-Rätseln
AJFaraday,

5

Node.js, 79 Bytes

require('fs').writeFile(a='P',a+[...'3331100110101110010011101011001'].join` `)

Erzeugt eine Datei mit dem Namen "P" im PPM-Format, die das Farbraster enthält.


5

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.

TextColor(11
Text(0,0,"0"
TextColor(19
Text(0,2,"0"
Text(2,0,"0"
TextColor(13
Text(4,0,"0"
Text(0,4,"0"
TextColor(14
Text(2,2,"0"
TextColor(18
Text(2,4,"0"
Text(4,2,"0"
TextColor(17
Text(4,4,"0"

Das sieht auf meinem kleinen Taschenrechnerbildschirm wirklich schlecht aus. Aber hey, Form spielt keine Rolle: ^)

Golf-Ausgabe: Modifiziert für 8x größere Ausgabe:

Bildbeschreibung hier eingeben



Bildbeschreibung hier eingeben



TI-BASIC, x Bytes

Verwenden von Pxl-On anstelle von Text:

Pxl-On(0,0,11
Pxl-On(0,1,19
Pxl-On(0,2,13
Pxl-On(1,0,19
Pxl-On(1,1,14
Pxl-On(1,2,18
Pxl-On(2,0,13
Pxl-On(2,1,18
Pxl-On(2,2,17

Ausgang: Aufgeblasen ~ 11x:

Bildbeschreibung hier eingeben



Bildbeschreibung hier eingeben


Es sind 180 Zeichen ohne Zeilenumbrüche. Ich bin mir nicht sicher, wie / ob Zeilenumbrüche beim Codegolf gezählt werden.
Nat

4
Ja, aber TI-BASIC ist eine Token-Sprache - der Interpreter sieht TextColorbeispielsweise 2 Bytes und nicht 9, wie Sie es von @Nat
Benjamin Urquhart

4

C ++, SFML, 177 Bytes

#include<SFML/Graphics.hpp>
int d[]={255,65535,0xFF00FF,65535,65280,0xFFFF00,0xFF00FF,0xFFFF00,0xFF0000};void f(){sf::Image g;g.create(3,3,(sf::Uint8*)d);g.saveToFile("a.jpg");}

Verwendet die sf::Image::create(int,int,unsigned char*)Methode, um ein Bild mit RGB-Werten zu erstellen


Sie können ein Byte abschneiden, indem Sie 0xFF0000als schreiben 255<<16.
Broxzier

1
Wenn Sie noch etwas weiter gehen, können Sie 13 Bytes einsparen, indem Sie die R / G / B-Farbwerte in Variablen vor dem Array definieren:int b=255<<16,g=65280,r=255,d[]={r,g|r,b|r,g|r,g,b|g,b|r,b|g,b};
Broxzier,

4

C #, 248 204 198 Bytes

class P{static void Main(){for(int i=0;i<12;i++){foreach(dynamic n in Enum.GetValues(typeof(ConsoleColor)))if((""+n)[0]=="RYMRYGCRMCBR"[i])Console.BackgroundColor=n;Console.Write(i%4<3?" ":"\n");}}}

Ausgabe:
Bildbeschreibung hier eingeben


4

BASIC C64, 106 Bytes

0 POKE53281,0
1 DATA144,28,158,156,144,13,158,30,159,144,13,156,159,31,144
2 READA:PRINTCHR$(A)+"o";:GOTO2

Bildbeschreibung hier eingeben


3

Wolfram Language (Mathematica), 72 Byte

Grid@Partition[RGBColor/@Unitize[Total/@Tuples[IdentityMatrix@3,{2}]],3]

Bildbeschreibung hier eingeben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.