Pixel-Art, Folge 1: Super Mario anzeigen


47

Es ist ein Ich!

Die heutige Aufgabe ist einfach: Schreiben Sie ein Programm oder eine Funktion, die das inaktive kleine Mario-Sprite von Super Mario Bros auf NES vor einem blauen Hintergrund anzeigt.

Jede Art von Eintrag ist gültig, solange diese 12 * 16 Pixel irgendwo auf dem Bildschirm / Fenster / Browser angezeigt werden.

(BEARBEITEN: Das angezeigte Bild kann vergrößert werden, wenn Ihre Sprache keine Pixelbilder unterstützt. Sie können auch ASCII- oder HTML-Bilder ausgeben, aber die richtigen Farben verwenden.)

Bild (um 400% vergrößert):

Sie müssen die folgenden Farben verwenden:

  • blau: # 6B8CFF
  • rot: # B13425
  • grün / braun: # 6A6B04
  • orange: # E39D25

Das kürzeste Programm (in der Anzahl der Zeichen) gewinnt!

Es gelten Standardlücken (insbesondere ist keine Netzwerkverbindung zulässig), aber das Hardcodieren und Anzeigen einer Bilddatei in Ihrem Programm ist zulässig. (Einträge, die diesen Trick verwenden, werden separat gewertet.)

Auf geht's!


Aktuelle Rangliste

Kürzeste Antwort nur mit Code:

Kürzeste Antwort mit einem hartcodierten Bild:


2
Auch das Erstellen einer Datei ist nicht erlaubt? Es muss angezeigt werden?
Martin Ender

1
Ich sehe kein Muster in diesem Bild. Es kommt also auf die beste Komprimierung an, die man in einer Sprache verwenden kann.
Optimierer

20
Nitpicking: Das ist Mario, nicht Super Mario.
Dennis

5
Was für eine lustige Idee ... Hier ist eine Idee für eine Folge-Herausforderung: Nimm das Mario-Bild (jedes Format) und verwandle es in ein Bild von Luigi!
Zibbobz

3
Können wir ein Piet-Programm machen, das wie er aussieht?
Conor O'Brien

Antworten:


36

HTML / JS, 206 158 153 102


102

Verwendeter Trick: Speichern Sie die komprimierte GIF-Datei als HTML-Datei und fügen Sie am Ende <img src = #> hinzu

Dank diesem Eintrag: https://codegolf.stackexchange.com/a/39926/10732 von @NiettheDarkAbsol

GIF87a  ¡ kŒÿã%jk±4%,       6„‡héj„Af-ÕdÎy\%    …R˜0”ŒÈJ­³I©±²û“ú=ª$±p%i¸•¤ <img src=#>

Demo: http://meuziere.free.fr/mario/gif.html


Ältere Versionen:

153

Verwendeter Trick: Speichern Sie die komprimierte PNG-Datei als HTML-Datei und fügen Sie am Ende <img src = #> hinzu

‰PNG


IHDR         _v”   PLTEjkkŒÿ±4%ã%ó’V   IIDAT×c[ʵj%C€ÍUŸ?|ìíœÿ02„ÿÿÊÐÊàÐÄÈÀ°ŠáÓë~†«ö3üZµž!jÚR‡P x( s6ïåÇ<img src=#>


158

Verwendeter Trick: Festlegen des getrimmten dataURI eines komprimierten PNG als SRC eines IMG-Tags und Packen des Ganzen in Unicode-Zeichen.


Führen Sie das in Ihrer JS-Konsole aus:

document.write(unescape(escape('🁩𫑧𘁳𬡣👤𨑴𨐺𪑭𨑧𩐻𨡡𬱥𝠴𛁩𥡂𣱒𭰰𢱇𩱯𠑁𠑁𣡓𥑨𡑕𩱁𠑁𠑷𠑁𠑁𤑁𩱍𠑁𠑂𩡄𜱡𥑁𠑁𠑄𡡂𣑖𡑖𬑡𭱒𬡪𤀫𮁎𠱘𪡮𤱘𮡫𩱨𥱁𠑁𠑓𥑬𡑑𥡑𢐱𜡍𢑗𮁘𢱅𣁖𬑊𥑏𠑺𥡕𡱮𮠹𛱇𦁺𬰷𤡭𨰯𮡁𮑨𤀯𛱹𪁄𤑅𣑲𩰰𣑔𢑷𣁃𢱧𩑈𥀶𜰶𡱦𝡶𜡍𛱸𨑴𦠴𪁡𭁰𤱂𫱤𤑯𢁧𫱁𭰾').replace(/uD./g,'')))


206

Ausgepackt (206b):

<img src=data:image;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQAgMAAABfD3aUAAAADFBMVEVqawRrjP+xNCXjnSXzkghWAAAASUlEQVQI12MIWxXKELVqJUOAzVUGnz9/GXzs7Rmc/zAyhP//yhDQEMrg0MTIwLCKgeHT636Gf6v2M/xatZ4hatpSBodQoHgoAw>

Demo


Benutztes Werkzeug:


Sie brauchen die Tags nicht. Verwenden Sie einfach die Daten-URL des Chroms und geben Sie sie in Ihre URL-Leiste ein. 200 Zeichen
Optimierer

Hm ... Ich dachte, dass dataURI kein gültiges "Programm" ist. Aber du hast recht. Alle Browser erlauben dataURIs in der Adressleiste.
XEM

Jetzt benutzt du selbst eine Lücke als OP;). Sie verlagern alle Arbeiten auf die externe / integrierte Komprimierung des GIF-Formats. Wenn das cool ist, sollten wir jetzt alle nach obskuren Bildformaten mit der besten Komprimierungsrate suchen, und ich hätte mir viel Arbeit sparen können, wenn ich meine eigene Komprimierung geschrieben hätte. ;)
Martin Ender

2
@xem Nun, deine Herausforderung, dein Anruf. Aber es scheint ein bisschen sinnlos, wenn wir jetzt nur nach dem komprimiertesten vorhandenen Dateiformat suchen. ;)
Martin Ender

1
Es scheint, dass der Rawgit-Link tot ist.
Addison Crump

27

Mathematica, 412 292 252 212 163 148 143 141 Zeichen

f=FromDigits[ToCharacterCode@#,2^16]~IntegerDigits~#2&;Image@Partition[f["넴╫賿橫ӣ鴥",256][[3#+1;;3#+3]]/256&/@"吀啐^A媾핮﻽溿뽫ﺩ埿⩕樨ꦪª⿼?ཐᐅ橕ꦪ喪"~f~4,12]

Hierbei wird die Caret-Notation ^Afür das Steuerzeichen am Codepunkt verwendet 1. In Mathematica kann ich das Zeichen tatsächlich buchstäblich einbetten, obwohl dies beim Kopieren zu allerlei Hässlichkeit führt. Wie auch immer, die obigen Angaben sind 2 Zeichen kürzer als meine frühere Version, und ich habe diese Zeichen erhalten, indem ich Base-4 anstelle von Base-5 zum Codieren der Farbpalettenindizes verwendet habe. Im Moment kann ich nicht die Mühe machen, die unten stehende Erklärung und den Screenshot zu korrigieren. Daher möchte ich Sie hier mit der ursprünglichen Base-5-Version meiner Antwort zurücklassen:


f=FromDigits[ToCharacterCode@#,2^16]~IntegerDigits~#2&;Image@Partition[f["넴╫賿橫ӣ鴥",256][[3#-2;;3#]]/256&/@"ᯱ曎㌟뱮䚻륏Σ襺ﺦ您汜豈塘ᙉ雬儥衰ꐰꃾ纔ㆯ쭴뫋澖ᕿ蓉"~f~5,12]

Ich verschlüssele die Pixel in Unicode-Zeichen (yay für das Zählen nach Zeichen!).

So sieht es in Mathematica aus:

Bildbeschreibung hier eingeben

So funktioniert das:

Zuerst definieren wir eine Funktion f, die Unicode-Strings (als erstes Argument übergeben #) in Listen von ganzen Zahlen umwandelt. Zuerst erhalten wir die Zeichencodes. Diese können als Ziffern einer Basis 65536 interpretiert werden. Und dann konvertieren wir diese Zahl in eine andere Basis, die als zweites Argument übergeben wird #2.

Jetzt machen wir das für den längeren Unicode-String. ToCharacterCodeergibt diese Liste:

{7153, 26318, 13087, 48238, 18107, 47439, 931, 35194, 62191, 65190, \
 24744, 57782, 27740, 35912, 22616, 5705, 38636, 20773, 34928, 42032, \
 41214, 32404, 12719, 52084, 47819, 28566, 5503, 33993}

Behandle dies als Basis 65536:

7933607912575313477287527915733176998797205587959732019781370103381...
4831246938139171755469819519515972565671101475553962564506286523593

Und zur Basis 5 konvertieren:

{2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
 2, 2, 2, 3, 3, 3, 4, 4, 3, 4, 2, 2, 2, 2, 3, 4, 3, 4, 4, 4, 3, 4, 4, \
 4, 2, 2, 3, 4, 3, 3, 4, 4, 4, 3, 4, 4, 4, 2, 3, 3, 4, 4, 4, 4, 3, 3, \
 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 3, 3, 1, 3, 3, 3, \
 2, 2, 2, 2, 2, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 2, 3, 3, 3, 3, 1, 1, 1, \
 1, 3, 3, 3, 3, 4, 4, 3, 1, 4, 1, 1, 4, 1, 3, 4, 4, 4, 4, 4, 1, 1, 1, \
 1, 1, 1, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 2, 1, 1, 1, \
 2, 2, 1, 1, 1, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, \
 2, 2, 2, 2, 3, 3, 3, 3}

Dies sind die Farbindizes der Pixel in der Reihenfolge Blau, Rot, Grün, Orange. Wir verwenden diese, um diese Liste von Zahlen zu indizieren, die die Farbpalette darstellt.

Nun zur Farbpalette. Das ist "넴╫賿橫ӣ鴥". Wir verwenden die obigen Indizes, um die richtige Zeichenfolge auszuwählen. Dann wenden wir unsere Funktion erneut an, verwenden aber die Basis 256. Das ergibt eine Liste von 12 ganzen Zahlen:

{177, 52, 37, 107, 140, 255, 106, 107, 4, 227, 157, 37}

Wir verwenden die ;;Bereichsindizierung, um das relevante Segment für die aktuelle Farbe zu ermitteln.

Zuletzt Partitionteilen wir dies einfach in Reihen von 12und füttern es Image. Voilà!

Edit: Mit der Unicode-Packung hat sich die RLE nicht mehr gelohnt. Beim Entfernen wurden 50 Zeichen gespeichert.

Bearbeiten: Natürlich, ohne RLE, gibt es auch keine Notwendigkeit, Basis 16 zu gehen.

Edit: Und wenn wir schon dabei sind, warum nicht auch die Farbpalette mit Unicode packen? (Ich habe eine Vermutung, dass ich ein bisschen mehr sparen kann, indem ich die gesamte Farbpalette auch zu einer einzigen Zeichenfolge zusammenstelle und sie Partitiondort auch verwende. Das werde ich später versuchen.)

Bearbeiten: Ja, das hat weitere 5 Bytes rasiert.


1
Würde es Ihnen etwas ausmachen, einen Screenshot des Ergebnisses hinzuzufügen? (nicht, dass ich deinem Code nicht vertraue, aber neugierig, wie er angezeigt wird: in einem Fenster? in einem Browser? sonst?)
xem

@xem wird es tun. Es ist eine REPL-Umgebung, die grafische Ein- und Ausgaben ermöglicht.
Martin Ender

Nicht sicher, aber spiegeln Sie den unteren Teil des Bildes?
Optimierer

1
@Optimizer Nein, ich bezweifle, dass ich das mit weniger Zeichen machen kann, als ich sparen würde.
Martin Ender

Wenn ich in der Mathematica-Dokumentation nachschaue, sehe ich keine Verwendung für Tilde, aber hier scheint es, dass Sie es verwenden, um das Ergebnis einer Funktion in eine andere zu übertragen und dann ein zusätzliches Argument auf diese zweite Funktion anzuwenden (IntegerDigits)? Auch die Farbpalette: Betrachtet man das Bild, so sieht es so aus, als gäbe es nur vier Farben, aber Ihre Farbpalette scheint mehr zu enthalten: {177, 52, 37, 107, 140, 255, 106, 107, 4, 227 157, 37}. In der Dokumentation zu Image wird anscheinend ein Graustufenbild ausgedruckt, sofern keine zusätzlichen Optionen wie ColorScale -> RGB verfügbar sind.
CryptoCommander

20

Java: 398 377

void s(){new java.awt.Frame(){public void paint(java.awt.Graphics g){int i=0,x,m[]={12226,44085194,467839834,0x5abea55a,0x5bbd5d50,0x5ffe9540,0x5ffe9540,0x5aee5d50,531408218,334277466,333492170,0xc02fc2},c[]={7048447,0xB13425,6974212,0xE39D25};for(setSize(99,99);i<192;g.setColor(new java.awt.Color(c[m[x]&3])),m[x]/=4,g.drawLine(x+40,60-i%16,x+40,60-i++%16))x=i/16;}}.show();}

Zeichnet einfach das Sprite, indem Sie ein int für jede Spalte entpacken. In einem vollen Programm gezeigt:

class P{
    public static void main(String[]a){
        new P().s();
    }

    void s(){
        new java.awt.Frame(){           
            public void paint(java.awt.Graphics g){
                int i=0,x,m[]={12226,44085194,467839834,0x5abea55a,0x5bbd5d50,0x5ffe9540,
                               0x5ffe9540,0x5aee5d50,531408218,334277466,333492170,0xc02fc2},
                          c[]={7048447,0xB13425,6974212,0xE39D25};
                for(setSize(99,99);i<192;
                    g.setColor(new java.awt.Color(c[m[x]&3])),m[x]/=4,
                    g.drawLine(x+40,60-i%16,x+40,60-i++%16)
                )x=i/16;
            }
        }.show();
    }
}

Obligatorischer Screenshot:

ich bins Mario


1
Sie können 9 Bytes mit einem speichern import java.awt.*.
Kevin Cruijssen

15

x86-Maschinencode, 102 Byte

So funktioniert es: Das Bild wird mit einer Palette als 2-Bit-Bild gespeichert. Jede Bildzeile wird als 3 Byte gespeichert, gefolgt von einem 1 Byte der Farbpalette. Dadurch können die Daten als einzelnes DWORD geladen werden. Die zwölf Pixel werden ausgegeben, indem die untersten 2 Bits des Werts ausgeblendet, in den Videospeicher geschrieben und dann der gesamte Wert um zwei Bits nach rechts verschoben wird. Sobald die Pixel für die Zeile ausgegeben wurden, wird das Palettenbyte in die VGA-Palette geschrieben. Wenn das Bild fertig gezeichnet ist, tritt das Programm in eine Endlosschleife ein.

Assembler-Code zum Generieren der Binärdatei:

org 100h
mov al,13h
int 10h
les ax,[bx]

mov si,image_data
draw:
add di,320-12
lodsd
xchg eax,ebx
mov cl,12
row:
mov ax,bx
and al,3
stosb
shr ebx,2
loop row
xchg ax,bx
mov dx,0x3c9
out dx,al
test al,al
jnz draw

image_data: db 21,0,85,0xb1/4, \
5,0,64,0x34/4,            \
165,190,87,0x25/4,        \
185,191,127,0x6b/4,       \
185,254,254,0x8c/4,       \
233,191,106,0xff/4,       \
213,255,95,0x6a/4,        \
165,168,85,0x6b/4,        \
169,40,106,0x4/4,         \
170,0,170,0xe3/4,         \
47,195,248,0x9d/4,        \
63,0,252,0x25/4,          \
15,0,240,111,             \
5,20,80,111,              \
169,85,106,111,           \  
170,85,170 

Base-64-codierte Binärdatei, speichern Sie sie unter Mario.com, um sie auszuführen:

Beispielausgabe: Bildbeschreibung hier eingeben


10

GIF - 93 Bytes

Die Hardcodierung des Bildes ist anscheinend in Ordnung, also ... yay? : D

GIF87a  ¡ kŒÿã%jk±4%,       6„‡héj„Af-ÕdÎy\%    …R˜0”ŒÈJ­³I©±²û“ú=ª$±p%i¸•¤  ;

Wie in Notepad ++ zu sehen

Screenshot in NP ++

Wie PHP - 131 Bytes

<? header("Content-Type:image/gif");?>GIF87a  ¡ kŒÿã%jk±4%,       6„‡héj„Af-ÕdÎy\%  …R˜0”ŒÈJ­³I©±²û“ú=ª$±p%i¸•¤  ;

1
kannst du bitte dein gif irgendwo hochladen (ctrlv.in zum beispiel) Ich würde es gerne in meinem Eintrag anstelle von PNG verwenden :)
xem


@NiettheDarkAbsol Ich bin nicht sicher, wie Sie die Größe davon gezählt haben, aber ich zähle 150 Bytes. Unabhängig davon erfolgt die Wertung nach Zeichen und es scheint sich um 114 Zeichen zu handeln.
Martin Ender

2
Ja, das PHP-Snippet ist in Ordnung für mich (auch wenn Sie die letzten 2 Bytes entfernen könnten). Aber das rohe GIF-Snippet ist kein Programm.
XEM

1
@xem: Wenn der Browser als "Interpreter" für HTML / Javascript / etc angesehen wird und das rohe GIF-Snippet über denselben Mechanismus
eingespeist

10

Bash + ImageMagick: 350 331 321 Zeichen

(Palette schamlos gestohlen Martin Büttner ‚s Antwort .)

p=(B13425 6B8CFF 6A6B04 E39D25)
for c in 21 0 85 5 0 64 165 190 87 1{85,91,27,85} 254{,} 233 191 106 213 255 95 165 168 85 169 40 106 170 0 170 47 195 248 63 0 252 15 0 240 5 20 80 169 85 106 170 85 170;{
for j in 0 2 4 6;{
d+=(-fill \#${p[c>>j&3]} -draw point\ $[i%12],$[i++/12])
}
}
convert -size 12x16 xc: "${d[@]}" x:

Beispielausgabe:

Mario

Zu inspizieren es einfach hinzufügen -scale 120zu convert‚s - Parameter , um eine 10 - fach skalierte Version zu erhalten:

Mario skalierte 10


2
s/185 191 127 185 254 254/1{85,91,27,85} 254{,}/; s/do/{/; s/done/}/
Grawity

Doh. Ich selbst upvoted DigitalTrauma ‚s damit verbundene Spitze , aber ich halte das vergessen {.. }. Vielen Dank, @grawity.
Manatwork

8

Octo / XO-Chip , 70 Bytes

Octo ist eine Assemblersprache auf hoher Ebene, die in bytecodierte Anweisungen für die virtuelle Maschine CHIP-8 kompiliert wird . Octo bietet einige benutzerdefinierte Erweiterungen, die als "XO-Chip" für den Basis-CHIP-8-Bytecode bezeichnet werden, einschließlich der Möglichkeit, 4-Farben-Bitmaps über überlagerte Bitebenen zu zeichnen.

Die kompilierten Bytes lauten wie folgt:

0xA2 0x08 0xF3 0x01 0xD0 0x00 0x1F 0x00 0x3F 0xC0 0x39 0x00 0x51 0x00 0x58 0x80
0x21 0xE0 0x00 0x00 0x3F 0x00 0x7F 0xE0 0xFF 0xF0 0x36 0xC0 0x1F 0x80 0x3F 0xC0
0x39 0xC0 0x70 0xE0 0xF0 0xF0 0x00 0x00 0x00 0x00 0x3F 0x80 0x7F 0xE0 0x7F 0xF0
0x3F 0xE0 0x1F 0xC0 0x37 0x00 0x76 0xE0 0xF0 0xF0 0xE9 0x70 0xE0 0x70 0xC0 0x30
0x00 0x00 0x70 0xE0 0xF0 0xF0

Mario

Führen Sie es hier in Ihrem Browser aus: http://johnearnest.github.io/Octo/index.html?gist=33aa37d4717a425ccd4f

Es ist wahrscheinlich aufschlussreicher, die Octo-Assemblersprache zu sehen, die diesen Bytecode erzeugt:

: main
    i := mario
    plane 3
    sprite v0 v0 0

: mario
    0x1F 0x00 0x3F 0xC0 0x39 0x00 0x51 0x00 
    0x58 0x80 0x21 0xE0 0x00 0x00 0x3F 0x00 
    0x7F 0xE0 0xFF 0xF0 0x36 0xC0 0x1F 0x80 
    0x3F 0xC0 0x39 0xC0 0x70 0xE0 0xF0 0xF0 
    0x00 0x00 0x00 0x00 0x3F 0x80 0x7F 0xE0 
    0x7F 0xF0 0x3F 0xE0 0x1F 0xC0 0x37 0x00 
    0x76 0xE0 0xF0 0xF0 0xE9 0x70 0xE0 0x70 
    0xC0 0x30 0x00 0x00 0x70 0xE0 0xF0 0xF0 

Das Hauptprogramm besteht aus drei Zwei-Byte-Anweisungen. Setzen Sie das Speicherindexregister ian den Anfang des Datensegments, wählen Sie Zeichnungsebene 3 (3 ist eine Bitmaske; dies zeigt an, dass Sie mit beiden Bitebenen im 4-Farben-Modus zeichnen möchten) und zeichnen Sie dann ein Sprite an einer durch angegebenen x- und y-Position Register v0(auf Null initialisiert). Die letzte 0 gibt die Größe des Sprites an, das in den Befehlssätzen SuperChip und XO-Chip ein 16x16-Sprite zeichnet. Im 4-Farben-Modus folgt auf eine Bitmap für die erste Ebene sofort eine Bitmap für die zweite Ebene.

Betrachten Sie dieses modifizierte Programm, das nach dem Zeichnen von Mario eine Ebene nach rechts scrollt, um zu sehen, wie die Ebenen funktionieren:

mario2

: main
    i := mario
    plane 3
    sprite v0 v0 0
    plane 2
    scroll-right
    scroll-right
    scroll-right
    scroll-right

: mario
    0x1F 0x00 0x3F 0xC0 0x39 0x00 0x51 0x00 
    0x58 0x80 0x21 0xE0 0x00 0x00 0x3F 0x00 
    0x7F 0xE0 0xFF 0xF0 0x36 0xC0 0x1F 0x80 
    0x3F 0xC0 0x39 0xC0 0x70 0xE0 0xF0 0xF0 
    0x00 0x00 0x00 0x00 0x3F 0x80 0x7F 0xE0 
    0x7F 0xF0 0x3F 0xE0 0x1F 0xC0 0x37 0x00 
    0x76 0xE0 0xF0 0xF0 0xE9 0x70 0xE0 0x70 
    0xC0 0x30 0x00 0x00 0x70 0xE0 0xF0 0xF0 

Wenn Ihnen das gefällt, könnte Ihnen eine meiner anderen Lösungen gefallen, die mit Octo geschrieben wurden. Es gibt tatsächlich einen Spielestau für den Monat Oktober, der auf diesem Tool basiert.


6

Groovy 417 386

Spaß wie die Hölle, aber mit einem schrecklichen Char Count. GroovyFX benötigt

m=[b:'6B8CFF',r:'B13425',g:'6A6B04',o:'E39D25'];groovyx.javafx.GroovyFX.start{stage(visible:!0){scene(width:60,height:80){flowPane{"3b5r4b2b9r1b2b3g2o1g1o3b1b1g1o1g3o1g3o1b1b1g1o2g3o1g3o1b2g4o4g1b3b7o2b2b2g1r3g4b1b3g1r2g1r3g1b4g4r4g2o1g1r1o2r1o1r1g2o3o6r3o2o8r2o2b3r2b3r2b1b3g4b3g1b4g4b4g".toList().collate 2 each{l->(l[0]as int).times{rectangle(width:5,height:5,fill:"#"+m[l[1]])}}}}}}

ungolfed:

m=[b:'6B8CFF',
   r:'B13425',
   g:'6A6B04',
   o:'E39D25']           

s=5

groovyx.javafx.GroovyFX.start {bd->
  stage(visible: !0) {
    scene(width:s*12, height:s*16) {
      flowPane {
        "3b5r4b 2b9r1b 2b3g2o1g1o3b 1b1g1o1g3o1g3o1b 1b1g1o2g3o1g3o 1b2g4o4g1b 3b7o2b 2b2g1r3g4b 1b3g1r2g1r3g1b 4g4r4g 2o1g1r1o2r1o1r1g2o 3o6r3o 2o8r2o 2b3r2b3r2b 1b3g4b3g1b 4g4b4g"
          .replaceAll(" ", "")
          .toList()
          .collate(2) 
          .each { l->
            t=l[0] as int
            cr=m[l[1]]
            t.times {
              rectangle(width:s, height:s, fill:"#"+cr) 
            }
          }
      }
    }
  }
}

Bildbeschreibung hier eingeben


grep()statttoList()
cfrick

5

HTML / JS, 427 408 264 256 239 226 Zeichen

Obfuscatweet, 271 270 264 256 239 226 Zeichen

Mit obfuscatweet konnte dies auf <250 gekürzt werden: D

document.write(unescape(escape('🁳𨱲𪑰𭀾𨰽𦰢𝡂𞁃𡡆𘠬𘡂𜐳𝀲𝐢𛀢𝡁𝡂𜀴𘠬𘡅𜰹𡀲𝐢𧐻𨐽𙰰𜐵𝐰𜀰𝐵𝐵𝀰𠑂𡑃𜀲𡑆𡑆𠰲𡑂𡡂𡠲𠡆𡑁𞀰𜱆𡡆𜀰𠐶𠐰𜀲𠐶𞑁𞁁𠐵𝑁𠑆𞑄𝰶𡡆𡀵𝐷𡡆𝐵𝐵𡠰𝐴𜐵𜀲𠐰𜁁𞁁𠐰𜁁𠐧𞱷𪑴𪀨𩁯𨱵𫑥𫡴𚑦𫱲𚁩🐰𞱩🀹𝠻𭱲𪑴𩐨𙰼𨡲🠧𚐩𮱨🐨𙰰𜀰𙰫𬁡𬡳𩑉𫡴𚁡𛡳𫁩𨱥𚁩𛁩𚰽𝠩𛀱𝠩𛡴𫱓𭁲𪑮𩰨𝀩𚐮𬱬𪑣𩐨𛐱𜠩𞱦𫱲𚁪🐰𞱪🀱𜠻𭱲𪑴𩐨𙰼𬡰𘁳𭁹𫁥🐢𬁡𩁤𪑮𩰺𜐠𞀻𨡡𨱫𩱲𫱵𫡤𞠣𙰫𨱛𪁛𪠫𚱝𧐫𙰢🠼𛱲𬀾𙰩𚐻𯐼𛱳𨱲𪑰𭀾').replace(/uD./g,'')))

Woraus besteht der folgende Code?

Verwendeter Trick: konvertiertes Bild in base4 Zeichenfolge aus Farbkacheln, konvertiert in eine hexadezimale Zeichenfolge. Der Index der Basis 4 bezeichnet Farbe (0 = Blau, 1 = ROT usw.). CSS mit einem Inline-p wird verwendet, weil divs Inhalt zum Erweitern benötigen (auch p ist kürzer). Da CSS mit einem Buchstaben beginnen muss, wird vor den CSS-Tags ein 'A' eingefügt.

Das Auffüllen aus dem CSS ergibt Pixel. Keines davon verwendet Unicode-Zeichen, mit denen ich sowieso nicht allzu vertraut bin, obwohl es in diesem Fall wahrscheinlich unter 300 gehen würde. Der relative Vorteil der Verwendung der Auffüllung besteht darin, dass Sie das Bild wie in diesem Fall auf die gewünschte Pixelgröße aufblasen können. Ich habe 9 Pixel verwendet, aber wenn Sie ein zusätzliches Zeichen ausgeben, können Sie bis zu 99 Pixel pro dargestelltem Pixel erhalten.


CSS, 127 119 118 114 100 13 0 Zeichen

Das Umschalten von pauf rpbeseitigt die Notwendigkeit von display:inline, kostet +1 Zeichen, -15! Zeichen!

Entfernte alle Farben und legte es in einem Array in JS-87 Zeichen. Dann habe ich gerade alle CSS entfernt

JS, 300 289 280 275 329 325 Zeichen

c=["6B8CFF","B13425","6A6B04","E39D25"];a='0155000555540ABEC02EFEFC2EBFBF2BFEA803FFF00A6A002A69A8AA55AAF9D76FFD557FF5555F0541502A00A8AA00AA';with(document)for(i=0;i<96;write('<br>')){h=('000'+parseInt(a.slice(i,i+=6),16).toString(4)).slice(-12);for(j=0;j<12;write('<rp style="padding:1 8;background:#'+c[h[j++]]+'"></rp>'));}

Ich habe versucht, so viel wie möglich aus dieser einfachen JS-Verarbeitung eines Hex-Strings herauszuschneiden, aber da es mein erster Versuch ist, habe ich nur das verwendet, was ich weiß. Das HTML-Schreiben wurde durch eine Funktion gekürzt, die Tags hinzufügt, und die Klassen verwenden den Basiswert 4, um die anzuzeigende Farbe zu bestimmen.

Ersetzen Sie charAt mit zusätzlichen Kürzungen durch Klammern [], entfernen Sie die Klasse A0 und legen Sie Blau als Standardfarbe für p fest, wodurch zusätzliche 10 Zeichen gespart werden. Die zusätzlichen Kosten für die Verwendung von rpTags werden durch einen enormen Verlust an CSS ausgeglichen.

Zusätzlicher Versatz vom Entfernen des while-Loop-Pads bis zum Hinzufügen von '000' für den Anwendungsfall und Schneiden von -12.

Fügte zusätzliches JS für Farben hinzu und fügte dann die Polsterung hinzu. Es wurde ein Fehler mit der Polsterung festgestellt, für dessen Behebung 2 zusätzliche Zeichen erforderlich sind. Eine Reihe von Schleifen komprimiert

HTML-Datei, 430 429 419 399 366 342 Zeichen

Demo

<script>c=["6B8CFF","B13425","6A6B04","E39D25"];a='0155000555540ABEC02EFEFC2EBFBF2BFEA803FFF00A6A002A69A8AA55AAF9D76FFD557FF5555F0541502A00A8AA00AA';with(document)for(i=0;i<96;write('<br>')){h=('000'+parseInt(a.slice(i,i+=6),16).toString(4)).slice(-12);for(j=0;j<12;write('<rp style="padding:1 8;background:#'+c[h[j++]]+'"></rp>'));}</script>

Nett! Ich rate Ihnen, alle Zeilenumbrüche in Ihrem Code zu entfernen und einen Link für eine Demo bereitzustellen ( c99.nl ). Als Bonus können Sie Ihren Eintrag in Unicode-Zeichen mit xem.github.io/obfuscatweet packen . Das wird deine Punktzahl verbessern.
xem

Sie können auch Ihre & lt; html> -Tags entfernen, das & lt; style> -Tag am Ende platzieren und den / style und das abschließende "}" der letzten CSS-Regel entfernen.
xem

@xem OK, ich habe alle Zeilen rausgeschnitten und alles zerquetscht. Ich werde versuchen, einen optimalen Weg zu finden, um die JS für obfuscatweet aufzuteilen.
Kompass

1
obfuscatweet akzeptiert jeden js-Code (damit Sie Ihre 289 js-Zeichen dort ablegen können) oder jeden html-Code (damit Sie Ihre html-Datei hier kopieren können). Die Ausgabe von obfuscatweet kann in der Konsole eines Browsers oder in einer HTML-Datei mit dem richtigen Zeichensatz-Meta-Tag ausgeführt werden.
xem

psst, du hast vergessen, das letzte "}" des CSS-Teils zu entfernen. Ohne geht es nicht.
Xem

5

MATLAB, 194 193 Bytes

Der Code:

imagesc(dec2base(base2dec(reshape('5FVQL5VVVT50A4L4HA594GAHA45A015DAL551G2L41GO101VO0A7FMAANVVAAVVVQ5VLVL40L8100L80',5,[])',32),4)-48);colormap([106 107 4;107 140 255;227 157 37;177 52 37]/255)

Und die Ausgabe:

Mario

Grundsätzlich habe ich das Mario-Bild so konvertiert, dass jedes Pixel eine 2-Bit-Zahl ist. Ich habe dann das in der Basis 32 codiert, das die Zeichenfolge ist, die im Code gezeigt wird. Diese Zeichenfolge wird zunächst in 5 x 16 umgewandelt (jede Zeile (12px) von 2-Bit-Zahlen wurde in Basis 32 codiert) und dann wieder in Basis 10 konvertiert. Das Ergebnis wird erneut in Basis 4 konvertiert 2 Bit Zahlen. Diese Zahlen werden mit dargestellt imagesc(). Anschließend werden die Farben mithilfe colormap()einer benutzerdefinierten Farbzuordnung der erforderlichen Hex-Werte zugewiesen .

Komisch, sind ein Drittel der Anzahl von Bytes verwendet nur die richtigen Farben zu setzen MATLAB zu erhalten , nachdem sie aufgetragen wurde. Der Farbcode entspricht in etwa der Anzahl der Bytes der gesamten Base32-Zeichenfolge !.

Ohne die Farbe zu korrigieren (den colormap()Aufruf zu entfernen ), sind es 135 Bytes, und dies ist die Ausgabe für die Standardfarbzuordnung in MATLAB R2013a:

Mario, keine Zuordnung


4

JavaScript / CSS / HTML 446 430 407 353 328 316

Ich habe so viel Golf gespielt, wie ich konnte, und am Ende habe ich schmutziges HTML / JS gesehen, aber was auch immer ... es funktioniert.

Edit : Das ist es ... ich bin fertig.

Bearbeiten Ernsthaft dieses Mal getan.

JavaScript

for(i=0;i<192;)document.body.innerHTML+=(i%12?"":"<br>")+"<font color=#"+["6B8CFF","B13425","6A6B04","E39D25"]["000111110000001111111110002223323000023233323330023223332333022333322220000333333300002212220000022212212220222211112222332131131233333111111333331111111133001110011100022200002220222200002222"[i++]]+">█"

JSFiddle


Die verlinkte JSFiddle enthält nicht die gleiche Version wie hier und funktioniert nicht (zumindest nicht für mich in Firefox). Übrigens für eine schönere Ausgabe *{line-height:1}würde ein helfen.
Manatwork

@manatwork Versuchen Sie es erneut.
SomeShinyObject

Nett. Aber warum die Div? Aus Neugier habe ich eine ECMAScript-Version ausprobiert. Erhält
manatwork

weil <div></div>ist kürzer als document.createElement('div'). Und JSFiddle mag nichtdocument.write
SomeShinyObject

1
Rückwärts den Zustand des ternären Operator loszuwerden Vergleich über die rechte Seite: i%12?"":"<br>".
Manatwork

4

Matlab - 449/332 305 Byte

partielle Komprimierung + Verwenden der unteren Bildsymetrie:

a=[0,0];b=[2,2];c=[3,3];d=[a,0];f=[b,2];g=[c,3];h=[b,b];i=[a,a];k=[1,1];l=[0,f,1,2;h,k;c,2,1,3,1;g,k,1;c,k,k;a,k,1,0;0,f,a;h,a];imshow(uint8([d,k,1,k,i;a,k,k,k,k,1,0;a,f,c,2,3,d;0,2,3,2,g,2,g,0;0,2,3,b,g,2,g;0,b,c,c,h,0;d,g,g,3,a;a,b,1,f,i;[l fliplr(l)]]),[107 140 255;177 52 37;106 107 4;227 157 37]/255)

- Teilweise komprimierte Version (332 Bytes):

a=[0,0]
b=[2,2]
c=[3,3]
d=[a,0]
e=[1,1,1]
f=[b,2]
g=[c,3]
h=[b,b]
i=[a,a]
imshow(uint8([d,e,1,1,i;a,e,e,e,0;a,f,c,2,3,d;0,2,3,2,g,2,g,0;0,2,3,b,g,2,g;0,b,c,c,h,0;d,g,g,3,a;a,b,1,f,i;0,f,1,b,1,f,0;h,e,1,h;c,2,1,3,1,1,3,1,2,c;g,e,e,g;c,e,e,1,1,c;a,e,a,e,a;0,b,2,i,f,0;h,i,h]),[107 140 255;177 52 37;106 107 4;227 157 37]/255)

Völlig unkomprimierte Version (449 Bytes):

imshow(uint8([0,0,0,1,1,1,1,1,0,0,0,0;0,0,1,1,1,1,1,1,1,1,1,0;0,0,2,2,2,3,3,2,3,0,0,0;0,2,3,2,3,3,3,2,3,3,3,0;0,2,3,2,2,3,3,3,2,3,3,3;0,2,2,3,3,3,3,2,2,2,2,0;0,0,0,3,3,3,3,3,3,3,0,0;0,0,2,2,1,2,2,2,0,0,0,0;0,2,2,2,1,2,2,1,2,2,2,0;2,2,2,2,1,1,1,1,2,2,2,2;3,3,2,1,3,1,1,3,1,2,3,3;3,3,3,1,1,1,1,1,1,3,3,3;3,3,1,1,1,1,1,1,1,1,3,3;0,0,1,1,1,0,0,1,1,1,0,0;0,2,2,2,0,0,0,0,2,2,2,0;2,2,2,2,0,0,0,0,2,2,2,2]),[107 140 255;177 52 37;106 107 4;227 157 37]/255)

Ausgabe in beiden Fällen (auf dem Bildschirm offensichtlich vergrößert, ist die reale 12x16pix):
MarioMagnified


Hey, ich fragte mich, ob jemand die Symmetrie irgendwie ausnutzen würde. Ich konnte mit der Methode, mit der ich schließlich ging, keinen Weg finden.
Holpriger

4

C 4999 Bytes

Dies kann absolut nicht mit einigen der Antworten hier mithalten, aber ich dachte, ich würde eine C-Antwort versuchen. Der Code besteht aus einer einzigen langen Zeile. Hier ist also ein Pastebin-Link. Wenn Sie möchten, finden Sie hier eine Base64-Codierung des gezippten Codes:

H4sICAzFGFYCA21hcmlvLmMA3Zc9DsIwDIXv0qndUqchkXwUurAgdYiFEEyIu4NYaZBI7PzNT3Lsz4mf408bjdPjct3odh6HVeujdgg4K4vzohCM8esdjHOpkrVoALUtIrBX8y1R04DKNCGZmTp85CVdAHifYuxO3mElIlju6xaRICOgCo4pD64PoiTzHnkZcHYnRhAYcEEpFznxB1mXP4TdS/KeVGYPZbmVaQHlnRVZFi65OkhoGodq+RHrby4xsTj8i6RmapXrPvfa0Q8ZWZY1/UPbSiC7Z2bYA7r0zla57Xmo8sOEzxdNYIXFhxMAAA==

Bemerkenswert ist, dass zum Ausführen keine externen Bibliotheken erforderlich sind.

Erfordert ein xterm-, ein Konsole- oder ein GNOME-Terminal, da es die RGB-Erweiterung für die ANSI-Escape-Codes verwendet, um die richtigen Farben auszugeben (ANSI definiert kein Orange). Aus offensichtlichen Gründen wird Ideone nicht funktionieren. Es kann in Windows unter Cygwin ausgeführt werden, das xterm verwendet (tatsächlich habe ich es so getestet). MSYS könnte funktionieren; Ich bin mir nicht sicher.

Ausgabe auf meinem Computer (xterm):

Ich bin es, Mario!


2
-1 ist kein Vielfaches von 10
Conor O'Brien

Sorry, es war in Bezug auf die Partitur
Conor O'Brien

4

Excel VBA, 310 307 295 Bytes

Anonyme VBE-Direktfensterfunktion, die an Zellen ein Mario an das Activesheet-Objekt ausgibt A1:L16

o=2465251:Cells.RowHeight=48:a[A1:L16],-29589:a[C4:K5,D3:I7,J7,L5,A11:L13],o:a[C3:E3,H3:H4,B4:B6,C6,D4:D5,E5,I5,H6:K6,C8:H8,B9:K10,A10:L10,C11,J11,B15:D16,A16,I15:K16,L16],289642:a[D1:H1,C2:K2,E8:E10,F10:H10,H9,D11:I13,C13:E14,H13:J14],2438321:a[E11,H11],o

Helper SubRoutine ein

Sub a(r,c):r.Interior.Color=c:End Sub

Ungolfed Version

Public Sub b()
    o = 2465251
    Cells.RowHeight = 48
    a [A1:L16], -29589
    a [C4:K5,D3:I7,J7,L5,A11:L13], o
    a [C3:E3,H3:H4,B4:B6,C6,D4:D5,E5,I5,H6:K6,C8:H8,B9:K10,A10:L10,C11,J11,B15:D16,A16,I15:K16,L16], 289642
    a [D1:H1,C2:K2,E8:E10,F10:H10,H9,D11:I13,C13:E14,H13:J14], 2438321
    a [E11,H11], o
End Sub


Private Sub a(ByRef r As Range, ByVal c As Integer)
    r.Interior.Color = c
End Sub

-3 Bytes zum Entfernen von Leerzeichen -12 Bytes für die Verwendung von [...]Notation über Range(...)Notation; Umstellung von Hex-Farben auf Int-Farben

Ausgabe

Ich bin es


3

Bash 346

pure Bash mit VT100-ähnlichen Escape-Sequenzen (sorry, keine Orange in dieser Palette)

C="  "
B="\033[44m$C"
R="\033[41m$C"
G="\033[42m$C"
O="\033[43m$C"
N="\033[00m\n"
A="BBBRRRRRBBBBNBBRRRRRRRRRBNBBGGGOOGOBBBNBGOGOOOGOOOBNBGOGGOOOGOOONBGGOOOOGGGGBNBBBOOOOOOOBBNBBGGRGGGBBBBNBGGGRGGRGGGBNGGGGRRRRGGGGNOOGRORRORGOONOOORRRRRROOONOORRRRRRRROONBBRRRBBRRRBBNBGGGBBBBGGGBNGGGGBBBBGGGGN"
while read -n1 v
do
  printf "${!v}"
done <<< "$A"

1
Sie können es reduzieren, indem Sie ein Array für die Palette anstelle von separaten Zeichen verwenden. Da das Deklarieren von assoziativen Arrays lang ist, sollten Sie es besser in ganze Zahlen umkodieren. A 295 Zeichen Version des Codes: pastebin.com/d0LW0HM1
Manatwork

3

Pyth, 83 Bytes

Haftungsausschluss: Dies ist kein gewinnbringender Kandidat, da einige der Sprachfunktionen nach dem Posten der Frage erstellt wurden.

.wc16@Lc4CM"±4%kÿjkã%"jC"T\0UP\0Z¾Õnþýn¿¿kþ©WÿõZ*Uj(©ª\0ªøÃ/ü\0?ð\0PjU©ªUª"4

Hier ist ein Hex-Dump:

00000000   2E 77 63 31  36 40 4C 63  34 43 4D 22  B1 34 25 6B  .wc16@Lc4CM".4%k
00000010   8C FF 6A 6B  04 E3 9D 25  22 6A 43 22  54 5C 30 55  ..jk...%"jC"T\0U
00000020   50 5C 30 01  5A BE D5 6E  FE FD 6E BF  BF 6B FE A9  P\0.Z..n..n..k..
00000030   57 FF F5 5A  2A 55 6A 28  A9 AA 5C 30  AA F8 C3 2F  W..Z*Uj(..\0.../
00000040   FC 5C 30 3F  F0 5C 30 0F  50 14 05 6A  55 A9 AA 55  .\0?.\0.P..jU..U
00000050   AA 22 34                                            ."4

Sie können das Programm auch hier herunterladen und mit ausführen

python3 pyth.py mario.pyth

Dies erzeugt eine Datei o.png:

Mario

Erläuterung:

Es gibt nur 4 verschiedene Farben, daher brauche ich nur 2 Bits, um die Farbe jedes Pixels zu speichern.

.wc16@Lc4CM"..."jC"..."4
                  "..."   the colors of the image, 2 bit per pixel
                 C        convert these bytes to a number
                j      4  and convert it to base 4 (extracting the colors)
           "..."          the hexcodes of the 4 colors (3 byte per color)
         CM               convert each byte into its number
       c4                 split into 4 lists
     @L                   for each pixel, pick the correct list of color-list
  c16                     split into 16 rows
.w                        save it as "o.png"

Funktioniert dies in der letzten Version von Pyth, bevor die Herausforderung veröffentlicht wurde?
Lirtosiast

@ ThomasKwa Ja, vergessen. Ich werde eine Info bearbeiten.
Jakube,

2

Verarbeitung von 2 - 359 Zeichen

Ich sah diese Herausforderung und dachte sofort an die pixel [] -Funktion von Processing. Ich hatte gehofft, dass es kürzer wird, aber ich bin immer noch ziemlich zufrieden mit dem Ergebnis, da dies mein erster Versuch ist, Code Golf zu spielen.

int i,l;i=l=0;size(12,16);loadPixels();for(char c:"3b5r6b9r3b3g2o1g1o4b1g1o1g3o1g3o2b1g1o2g3o1g3o1b2g4o4g4b7o4b2g1r3g5b3g1r2g1r3g1b4g4r4g2o1g1r1o2r1o1r1g5o6r5o8r2o2b3r2b3r3b3g4b3g1b4g4b4g".toCharArray()){while(l>0){pixels[i]=#6B8CFF;if(c=='r')pixels[i]=#B13425;if(c=='g')pixels[i]=#6A6B04;if(c=='o')pixels[i]=#E39D25;i++;l--;}if(c<58){l=c-48;}}updatePixels();

ungolfed:

int i,l;i=l=0;
size(12,16);
loadPixels();
for(char c:"3b5r6b9r3b3g2o1g1o4b1g1o1g3o1g3o2b1g1o2g3o1g3o1b2g4o4g4b7o4b2g1r3g5b3g1r2g1r3g1b4g4r4g2o1g1r1o2r1o1r1g5o6r5o8r2o2b3r2b3r3b3g4b3g1b4g4b4g".toCharArray())
{
    while(l>0)
    {
        pixels[i]=#6B8CFF;
        if(c=='r')pixels[i]=#B13425;
        if(c=='g')pixels[i]=#6A6B04;
        if(c=='o')pixels[i]=#E39D25;
        i++;
        l--;
    }
    if(c<58){l=c-48;}
}
updatePixels();

die verarbeitung können sie hier herunterladen


2

Javascript 515

str='';
"000111110000|001111111110|002223323000|023233323330|023223332333|022333322220|000333333300|002212220000|022212212220|222211112222|332131131233|333111111333|331111111133|001110011100|022200002220|222200002222"
.split("|").forEach(function(ov, ok) {
str += '<div>'
    ov.split("").forEach(function(iv, ik) {
    str += '<div style="width:1px;height:1px;background-color:' + ['#6B8CFF','#B13425','#6A6B04','#E39D25'][iv] + ';display:inline-block"></div>';
    });
    str+= '</div>';
});
document.write(str);

Ich habe es gerade zum Laufen gebracht, muss noch reingehen und Golf spielen


1
Sie können die divs, aus denen die Zeilen bestehen, durch ein Tag ersetzen, das standardmäßig inline ist. Ich habe es nicht getestet, aber es asollte funktionieren. Sie können auch backgroundanstelle von verwenden background-color.
NinjaBearMonkey

2

Perl - Ungolfed 927

Ich muss später Golf spielen. Zum ersten Mal ausprobieren Image::Magick.

#!/usr/local/bin/perl
use Image::Magick;
use strict;
use warnings;

my @p = (
[0,0,0,1,1,1,1,1,0,0,0,0],
[0,0,1,1,1,1,1,1,1,1,1,0],
[0,0,2,2,2,3,3,2,3,0,0,0],
[0,2,3,2,3,3,3,2,3,3,3,0],
[0,2,3,2,2,3,3,3,2,3,3,3],
[0,2,2,3,3,3,3,2,2,2,2,0],
[0,0,0,3,3,3,3,3,3,3,0,0],
[0,0,2,2,1,2,2,2,0,0,0,0],
[0,2,2,2,1,2,2,1,2,2,2,0],
[2,2,2,2,1,1,1,1,2,2,2,2],
[3,3,2,1,3,1,1,3,1,2,3,3],
[3,3,3,1,1,1,1,1,1,3,3,3],
[3,3,1,1,1,1,1,1,1,1,3,3],
[0,0,1,1,1,0,0,1,1,1,0,0],
[0,2,2,2,0,0,0,0,2,2,2,0],
[2,2,2,2,0,0,0,0,2,2,2,2],
);
my $image = Image::Magick->new;
$image->Set(size=>'12x16');
$image->ReadImage('canvas:white');
for my $i (0..$#p) {
    for (0..(@{$p[$i]} - 1)) {
        my $color;
        $color = ($p[$i][$_] < 1 ? "#6B8CFF" : $p[$i][$_] < 2 ? "#B13425" : $p[$i][$_] < 3 ? "#6A6B04" : "#E39D25");
        print "$i : $_ : $color \n";
       $image->Set("pixel[$_,$i]"=> $color);
    }
}
#$image->Write("mario.png");
$image->Display();

Ich bin sicher, wir haben viele davon, aber hier ist meine: Mario!


2

Bash druckbar: 179 158 Bytes

Inspiriert von der Antwort von user2485710 .

Sie müssen Ihr Terminal so einstellen, dass die Farben genau übereinstimmen.

eval "$(base64 -d<<</AD/8AAD9Wm/2amr2Wpq1qlX/qqv9RX/1RRXVQBVpIIaqAAqoAAK8DwP1f9XVf9V|xxd -b -c3 -g0|cut -c10-33|sed $'s/../\e[4$[2#&+1]m \e[0m/g;s/^/echo /')"

das ist was ich sehe . mache ich etwas falsch?
Donnerstag,

2
@ardnew: BSD base64 verwendet -Dzum Dekodieren und -dzum Debuggen .
Dennis

2

Tcl 298

package require base64
set d [base64::decode AVUABVVUCr7ALv78Lr+/K/6oA//wCmoAKmmoqlWq+ddv/VV/9VVfBUFQKgCoqgCq]
binary scan $d B* z
set i 0
foreach {a b} [split $z ""] {
if {$i % 12 == 0} {puts "\033\[0m"}
puts -nonewline "\033\[4[string map {00 4 01 1 10 2 11 3} $a$b];m  "
incr i
}
puts "\033\[0m"

Es handelt sich um ein Bild mit 2 Bit pro Pixel in der Basis 64. Pixel werden auf Ansi-Escape-Codes abgebildet.

Bildbeschreibung hier eingeben


Ohne es zu versuchen, scheint Ihr Code ein bisschen golfen zu können: tio.run/…
sergiol

2

JavaScript - 256 Zeichen (161 obfusc-a-tweeted)

d=v=>{for(i=v&15;i--;)O.innerHTML+=`<i style="color:#${'6B8CFF6A6B04B13425E39D25'.substr(x%4*6,6)}">█</i>`+(++f%12?'':'<br>');x++},f=x=0,[..."fhilsswsssuss££cgÓdcddc¤g£stcucds³c¹cefefcc¤c§"].map(v=>(d(v=v.charCodeAt(0)-99),d(v>>4)))
<p id=O>

Bildbeschreibung hier eingeben

Methode:

  1. Bei Verwendung von Bitmasking stellt eine 63 x 8-Bit-Zeichenfolge ein 126 x 4-Bit-Wertearray bereit, das aus Zahlen im Bereich von 0 bis 9 besteht. (Frustrierend ... hat 63 Zeichen durch 4-Bit gespeichert, aber 50 Zeichen damit verbracht, die Bits wieder auszupacken, lol. Trotzdem sind 13 Zeichen 13 Zeichen! :-)
  2. Die 4 Farben werden in der Reihenfolge B, G, R, O durchlaufen. Bei jeder Iteration werden 0-9 Divs für die aktuelle Farbe gerendert (mit einem Zeilenumbruch alle 12).

Um die optimale Reihenfolge für den Farbzyklus zu bestimmen, habe ich den Komprimierungsalgorithmus mit den Rohdaten für jede der 24 Permutationen von [R, G, B, O] verglichen und diejenige ausgewählt, die die kürzeste Ausgabe ergab (126 war am besten, am wenigsten optimal war) um 150-etwas)

ETA entdeckte dies erst, nachdem sie die anderen Antworten mit obfusca-tweet gelesen hatte ...

eval(unescape(escape`𩀽𭠽🡻𩡯𬠨𪐽𭠦𜐵𞱩𛐭𞰩𣰮𪑮𫡥𬡈𥁍𣀫👠🁩𘁳𭁹𫁥🐢𨱯𫁯𬠺𘰤𮰧𝡂𞁃𡡆𝡁𝡂𜀴𠠱𜰴𜠵𡐳𞑄𜠵𙰮𬱵𨡳𭁲𚁸𙐴𚠶𛀶𚑽𘠾ﶈ�𛱩🡠𚰨𚰫𩠥𜐲🰧𙰺𙰼𨡲🠧𚐻𮀫𚱽𛁦👸🐰𛁛𛠮𛠢𩡨𪑬𬱳𭱳𬱳𭑳𬲣𸱣𩳓𩁣𩁤𨲤𩲣𬱴𨱵𨱤𬲳𨲹𨱥𩡥𩡣𨲤𨲧𘡝𛡭𨑰𚁶🐾𚁤𚁶👶𛡣𪁡𬡃𫱤𩑁𭀨𜀩𛐹𞐩𛁤𚁶🠾𝀩𚐩𒠼𬀠`.replace(/u../g,'')))

Weitere Ideen. - Probieren Sie den 3-Bit-Datenbereich 0-6 aus, wobei der seltene 7,8,9 jeweils 4 zusätzliche Punkte bringt: 60000N. - Überprüfen Sie die Farbzykluspermutationen in alle Richtungen und Geschwindigkeiten außer horizontal jeweils um ein Pixel. - Versuchen Sie es mit mehreren Renderdurchläufen, damit die Farben überlagert werden können.


D'oh, es dämmerte gerade, dass es sich um Zeichen und nicht um Byes handelt. Mit den 16-Bit-Zeichen hätten wir die Daten wahrscheinlich noch einmal halbieren können.
Holpriger

1

Javascript, 253 240 238 236

Obfuscatweet ed source - 253 240 238 236

document.write(unescape(escape('🁳𨱲𪑰𭀾𘠵𫐲𫰹𫑨𜰰𞐷𫁯𩰹𜐰𜑰𪰹𮡰𝱵𞑶𭁸𭰹𜱱𭐸𞐸𝡷𭰹𭑯𩱫𞐳𨱳𬁨𞐶𪡭𪡥𞐶𬁬𫡵𞐶𭠷𮐲𞑭𝐸𜀹𭁨𮡯𞐳𨡥𨰵𘠮𬱰𫁩𭀨𞐩𛡦𫱲𡑡𨱨𚁦𭑮𨱴𪑯𫠨𨰩𮱤👤𫱣𭑭𩑮𭀻𨰽𬁡𬡳𩑉𫡴𚁣𛀳𝠩𛡴𫱓𭁲𪑮𩰨𝀩𞱷𪁩𫁥𚁣𛡬𩑮𩱴𪀼𜐲𚑣🐢𜀢𚱣𞱣𛡳𬁬𪑴𚀢𘠩𛡦𫱲𡑡𨱨𚁦𭑮𨱴𪑯𫠨𭠩𮱤𛡷𬡩𭁥𚀢🁰𘁳𭁹𫁥🐧𩁩𬱰𫁡𮐺𪑮𫁩𫡥𞱰𨑤𩁩𫡧𞠹𞱢𨑣𪱧𬡯𭑮𩀺𘰢𚱛𘠶𠠸𠱆𡠢𛀢𝡁𝡂𜀴𘠬𘡅𜰹𡀲𝐢𛀢𠠱𜰴𜠵𘡝𦰫𭡝𚰢𙰾🀯𬀾𘠩𯐩𞱤𛡷𬡩𭁥𚀢🁢𬠾𘠩𯐩🀯𬱣𬡩𬁴🠠').replace(/uD./g,'')))

Unverdeckt - 395 370 365 361

<script>"5m2o9mh3097log9101pk9zp7u9vtxw93qu8986ww9uogk93csph96jmje96plnu96v7y29m5809thzo93bec5".split(9).forEach(function(c){d=document;c=parseInt(c,36).toString(4);while(c.length<12)c="0"+c;c.split("").forEach(function(v){d.write("<p style='display:inline;padding:9;background:#"+["6B8CFF","6A6B04","E39D25","B13425"][+v]+"'></p>")});d.write("<br>")})</script>

Vielen Dank an @compass für die <p>Tag-Tricks und @xem für 2 (5) Zeichen.

Demo

Es konvertiert Daten von der Basis 36 und konvertiert in die Basis 4.


Ich kann es nicht testen, aber ich glaube nicht, dass padding:9es etwas ohne eine Einheit danach macht. Sie können stattdessen auch ein Element mit einem Buchstaben wie aoder qimplizit inline verwenden p.
NinjaBearMonkey

@hsl Ich habe den Demolink aktualisiert und er funktioniert zumindest in Chrome, Firefox und Safari auf dem Mac gut.
Snack

-2 Bytes: Ersetze "|" um 9 in der Zeichenfolge und die Teilung.
Wenn

@xem Danke, dass du mich an den Trick mit der Aufteilung der Zahlen erinnert hast. Und da wir keine document.writeVariablen zuweisen können (wir sollten verwenden document.write.bind(document)), war mein Bestes, documentVariablen zuzuweisen .
Snack

oder, können Sie dies zum ersten Mal tun: (d = document) [w = "schreiben"] (/ * Dinge zu schreiben * /), und genau das tun nach: d [w] ( "Hallo")
xem

1

JavaScript ES6 (HTML + CSS), 199 307 3195 3630

Mit Obfusc-a-tweet :

eval(unescape(escape('𬰽𦱝𒠧𜰹𮡲𬀳𝁤𩡬𜱪𩱴𜐴𨡷𭐵𝁢𪱣𩠴𝱰𜡨𜱦𫁹𭀳𪑮𪀱𝀵𝀸𞐶𫑳𫱡𞑰𩡥𝰹𭁺𝑲𞑤𝁢𜰳𝁨𩁸𝀵𩀴𞐶𫠹𩱱𙰮𫑡𭁣𪀨𛰮𮰵𯐯𩰩𛡦𫱲𡑡𨱨𚀨𫠬𪐩🐾𦰮𛠮𬁡𬡳𩑉𫡴𚁮𛀳𝠩𛡴𫱓𭁲𪑮𩰨𝀩𧐮𩡯𬡅𨑣𪀨𚁭𛁪𚐽🡳𛡰𭑳𪀨𪠫𜐫𙱰𮀠𙰫𚀫𪐫𜐩𚰧𬁸𘀣𙰫𦰧𠠱𜰴𜠵𙰬𙰶𠠸𠱆𡠧𛀧𝡁𝡂𜀴𙰬𙱅𜰹𡀲𝐧𧑛𚱭𧐩𚐩𒡤𫱣𭑭𩑮𭀮𭱲𪑴𩐨𙰼𬀠𬱴𮑬𩐽𘡷𪑤𭁨𞠱𬁸𞱨𩑩𩱨𭀺𜑰𮀻𨡯𮀭𬱨𨑤𫱷𞠧𚱳𚰧𘠧𚐠').replace(/uD./g,'')))

Dadurch wird das Sprite angezeigt, ohne dass Bilder oder mehrere Elemente verwendet werden. Die CSS- box-shadowEigenschaft wird nur zum Erstellen der einzelnen Pixel missbraucht . Versuchen Sie es unter http://jsbin.com/pozohiyezo/ . Diese unverschlüsselte Version hat 307 Zeichen :

s=[]
'39zrp34dfl3jgt14bwu54bkcf47p2h3flyt3inh1454896msoa9pfe79tz5r9d4b334hdx45d496n9gq'.match(/.{5}/g).some((n,i)=>[...parseInt(n,36).toString(4)].forEach((m,j)=>s.push(j+1+'px '+(+i+1)+'px #'+['B13425','6B8CFF','6A6B04','E39D25'][+m])))
document.write('<p style="width:1px;height:1px;box-shadow:'+s+'"')

Dies ist die ursprüngliche HTML-Version in reinem Vanille. Sehen Sie es in Aktion unter http://jsfiddle.net/gfeLn1ey/1/ .

<p style="width:1px;height:1px;box-shadow:4px 1px 0 #B13425,5px 1px 0 #B13425,6px 1px 0 #B13425,7px 1px 0 #B13425,8px 1px 0 #B13425,12px 1px 0 #6B8CFF,3px 2px 0 #B13425,4px 2px 0 #B13425,5px 2px 0 #B13425,6px 2px 0 #B13425,7px 2px 0 #B13425,8px 2px 0 #B13425,9px 2px 0 #B13425,10px 2px 0 #B13425,11px 2px 0 #B13425,12px 2px 0 #6B8CFF,3px 3px 0 #6A6B04,4px 3px 0 #6A6B04,5px 3px 0 #6A6B04,6px 3px 0 #E39D25,7px 3px 0 #E39D25,8px 3px 0 #6A6B04,9px 3px 0 #E39D25,12px 3px 0 #6B8CFF,2px 4px 0 #6A6B04,3px 4px 0 #E39D25,4px 4px 0 #6A6B04,5px 4px 0 #E39D25,6px 4px 0 #E39D25,7px 4px 0 #E39D25,8px 4px 0 #6A6B04,9px 4px 0 #E39D25,10px 4px 0 #E39D25,11px 4px 0 #E39D25,12px 4px 0 #6B8CFF,2px 5px 0 #6A6B04,3px 5px 0 #E39D25,4px 5px 0 #6A6B04,5px 5px 0 #6A6B04,6px 5px 0 #E39D25,7px 5px 0 #E39D25,8px 5px 0 #E39D25,9px 5px 0 #6A6B04,10px 5px 0 #E39D25,11px 5px 0 #E39D25,12px 5px 0 #E39D25,2px 6px 0 #6A6B04,3px 6px 0 #6A6B04,4px 6px 0 #E39D25,5px 6px 0 #E39D25,6px 6px 0 #E39D25,7px 6px 0 #E39D25,8px 6px 0 #6A6B04,9px 6px 0 #6A6B04,10px 6px 0 #6A6B04,11px 6px 0 #6A6B04,12px 6px 0 #6B8CFF,4px 7px 0 #E39D25,5px 7px 0 #E39D25,6px 7px 0 #E39D25,7px 7px 0 #E39D25,8px 7px 0 #E39D25,9px 7px 0 #E39D25,10px 7px 0 #E39D25,12px 7px 0 #6B8CFF,3px 8px 0 #6A6B04,4px 8px 0 #6A6B04,5px 8px 0 #B13425,6px 8px 0 #6A6B04,7px 8px 0 #6A6B04,8px 8px 0 #6A6B04,12px 8px 0 #6B8CFF,2px 9px 0 #6A6B04,3px 9px 0 #6A6B04,4px 9px 0 #6A6B04,5px 9px 0 #B13425,6px 9px 0 #6A6B04,7px 9px 0 #6A6B04,8px 9px 0 #B13425,9px 9px 0 #6A6B04,10px 9px 0 #6A6B04,11px 9px 0 #6A6B04,12px 9px 0 #6B8CFF,1px 10px 0 #6A6B04,2px 10px 0 #6A6B04,3px 10px 0 #6A6B04,4px 10px 0 #6A6B04,5px 10px 0 #B13425,6px 10px 0 #B13425,7px 10px 0 #B13425,8px 10px 0 #B13425,9px 10px 0 #6A6B04,10px 10px 0 #6A6B04,11px 10px 0 #6A6B04,12px 10px 0 #6A6B04,1px 11px 0 #E39D25,2px 11px 0 #E39D25,3px 11px 0 #6A6B04,4px 11px 0 #B13425,5px 11px 0 #E39D25,6px 11px 0 #B13425,7px 11px 0 #B13425,8px 11px 0 #E39D25,9px 11px 0 #B13425,10px 11px 0 #6A6B04,11px 11px 0 #E39D25,12px 11px 0 #E39D25,1px 12px 0 #E39D25,2px 12px 0 #E39D25,3px 12px 0 #E39D25,4px 12px 0 #B13425,5px 12px 0 #B13425,6px 12px 0 #B13425,7px 12px 0 #B13425,8px 12px 0 #B13425,9px 12px 0 #B13425,10px 12px 0 #E39D25,11px 12px 0 #E39D25,12px 12px 0 #E39D25,1px 13px 0 #E39D25,2px 13px 0 #E39D25,3px 13px 0 #B13425,4px 13px 0 #B13425,5px 13px 0 #B13425,6px 13px 0 #B13425,7px 13px 0 #B13425,8px 13px 0 #B13425,9px 13px 0 #B13425,10px 13px 0 #B13425,11px 13px 0 #E39D25,12px 13px 0 #E39D25,1px 14px 0 #6B8CFF,2px 14px 0 #6B8CFF,3px 14px 0 #B13425,4px 14px 0 #B13425,5px 14px 0 #B13425,6px 14px 0 #6B8CFF,7px 14px 0 #6B8CFF,8px 14px 0 #B13425,9px 14px 0 #B13425,10px 14px 0 #B13425,11px 14px 0 #6B8CFF,12px 14px 0 #6B8CFF,1px 15px 0 #6B8CFF,2px 15px 0 #6A6B04,3px 15px 0 #6A6B04,4px 15px 0 #6A6B04,5px 15px 0 #6B8CFF,6px 15px 0 #6B8CFF,7px 15px 0 #6B8CFF,8px 15px 0 #6B8CFF,9px 15px 0 #6A6B04,10px 15px 0 #6A6B04,11px 15px 0 #6A6B04,12px 15px 0 #6B8CFF,1px 16px 0 #6A6B04,2px 16px 0 #6A6B04,3px 16px 0 #6A6B04,4px 16px 0 #6A6B04,5px 16px 0 #6B8CFF,6px 16px 0 #6B8CFF,7px 16px 0 #6B8CFF,8px 16px 0 #6B8CFF,9px 16px 0 #6A6B04,10px 16px 0 #6A6B04,11px 16px 0 #6A6B04,12px 16px 0 #6A6B04,6px 6px 0 5px #6B8CFF"

Bis dahin können Sie kein <p-Tag schließen :)
xem

Dieser Code kann in einem Tool wie regpack eine sehr gute Komprimierung aufweisen. Hier ist ein Beispiel in 729b (JS wird jedoch zum Schreiben des HTML verwendet): goo.gl/7fF7kx
xem

@xem Eigentlich hatte ich nicht einmal daran gedacht, den Code mit JS zu generieren, aber ich konnte ihn nach dem Muster des Codes viel kürzer kaufen.
NinjaBearMonkey

1

Javascript, 256 oder 245, 252 oder 241

256

document.write("k6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclcidld".replace(/./g,function(x){return new Array((x=parseInt(x,36))&7).join("<li style=padding:4%;float:left;background:#"+['B13425','6A6B04','6B8CFF','E39D25'][x>>3]+">")}))

Es ist traurig, 256 zu überschreiben, aber 245 ist möglich, wenn nicht druckbare Zeichen verwendet werden:

document.write(btoa(">§ç©­ª¥j¦¬jÈÚ©»²&ív[-½ÍÙÈåÚÚÚ­êÙ«»»køÉ\\Ù]").replace(/./g,function(x){return new Array((x=parseInt(x,36))&7).join("<li style=padding:4%;float:left;background:#"+["B13425","6A6B04","6B8CFF","E39D25"][x>>3]+">")}))

Es gibt ein Problem beim Senden einer Lösung mit nicht druckbaren Zeichen. Das Argument von btoamuss das Ergebnis von atob("ij6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclcidld")mit 1 Symbol der Länge sein, die hinzugefügt wird, um den Backslash zu umgehen.

Kürzen Sie beide Lösungen um 4 Symbole: Für die Array-Erstellung benötigen wir keine neuen.

252

document.write("k6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclcidld".replace(/./g,function(x){return Array((x=parseInt(x,36))&7).join("<li style=padding:4%;float:left;background:#"+['B13425','6A6B04','6B8CFF','E39D25'][x>>3]+">")}))

241

document.write(btoa("©ùêG+j©Z©«²6ªnƬ»]Ëeog&sför'yv¶¶«z¶jîîçãâ>$rVÚÙ]").replace(/./g,function(x){return Array((x=parseInt(x,36))&7).join("<li style=padding:4%;float:left;background:#"+['B13425','6A6B04','6B8CFF','E39D25'][x>>3]+">")}))

In dieser Version ist kein Escape-Befehl erforderlich. Das btoaArgument ist das Ergebnis vonatob("k6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclbaidld")


Ich bemerkte das nicht druckbare Problem bei dieser und meiner letzten Herausforderung. Ich dachte, es wären nur die Buchstaben 8, 9 und 13, wenn das hilft (obwohl ich mich leicht irren könnte)
holpriger

1

Perl, 266 260 257 249 245 Bytes

$_="444111114444441111111114442223323444423233323334423223332333422333322224444333333344442212224444422212212224222211112222332131131233333111111333331111111133441114411144422244442224222244442222";s/\d/\033[4$&m  /g;s/.{84}/$&\033[00m\n/g;print

Verwendet einen ähnlichen Ansatz wie die bash-Lösung von user2485710, um eine Ausgabe im VT100-Stil zu schreiben. Entfernt das explizite N für Zeilenvorschub, indem alle 12 "vt100 Pixel" ein Zeilenvorschub eingefügt wird, 12 * 7 = 84.


1

SmileBASIC, 147 136 Zeichen

P$="xxxxxxxx
FOR I=0TO 191C=ASC("xxxxxxxxxxxxxxxxxxxxxxxx"[I/8])>>I MOD 8*2AND 3GPSET I/16,15AND I,ASC(P$[C*2])<<16OR ASC(P$[C*2+1])NEXT

Ausgabe (beschnitten): Bildschirmfoto

Ich habe alle Zeichen in den Datenketten durch x's ersetzt. Hier sind die Zeichencodes (in UCS-2):
P$(Palette): FF6B,8CFF,FFB1,3425,FF6A,6B04,FFE3,D925
Bilddaten:0000,83F8,0A80,A3FA,8BE4,A5EA,BEA5,A55A,7EE5,0575,BFF5,0156,BFF5,0156,BBA5,0575,3AF4,A55A,3BC4,A5EA,0BC4,A3FA,0300,83F8

Die Palette ist in einer Zeichenfolge gespeichert, wobei jede Farbe (32 Bit) in zwei Zeichen (jeweils 16 Bit) gespeichert ist. Die Bilddaten (2 Bit pro Pixel) werden in einer anderen Zeichenfolge gespeichert (8 Pixel pro Zeichen).
Glücklicherweise wird die Herausforderung in Zeichen bewertet, da diese Datei erheblich größer ist, wenn sie in UTF-8 gespeichert wird.


1

05AB1E , 87 Bytes (nicht konkurrierend)

•8,vkJíÝ1¢tt6,9XÂck$XSãõO©Ú"›qf®¸Ì#}„K0ÝCìxý}É~ð_áú•4BSvy•3«WKyÛòèz*Ðeb•16B6ôè'#ì})12ô»

Probieren Sie es online!

Ausgänge:

#B13425 #B13425 #B13425 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #B13425 #B13425 #B13425 #B13425
#B13425 #B13425 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #B13425
#B13425 #B13425 #6A6B04 #6A6B04 #6A6B04 #E39D25 #E39D25 #6A6B04 #E39D25 #B13425 #B13425 #B13425
#B13425 #6A6B04 #E39D25 #6A6B04 #E39D25 #E39D25 #E39D25 #6A6B04 #E39D25 #E39D25 #E39D25 #B13425
#B13425 #6A6B04 #E39D25 #6A6B04 #6A6B04 #E39D25 #E39D25 #E39D25 #6A6B04 #E39D25 #E39D25 #E39D25
#B13425 #6A6B04 #6A6B04 #E39D25 #E39D25 #E39D25 #E39D25 #6A6B04 #6A6B04 #6A6B04 #6A6B04 #B13425
#B13425 #B13425 #B13425 #E39D25 #E39D25 #E39D25 #E39D25 #E39D25 #E39D25 #E39D25 #B13425 #B13425
#B13425 #B13425 #6A6B04 #6A6B04 #6B8CFF #6A6B04 #6A6B04 #6A6B04 #B13425 #B13425 #B13425 #B13425
#B13425 #6A6B04 #6A6B04 #6A6B04 #6B8CFF #6A6B04 #6A6B04 #6B8CFF #6A6B04 #6A6B04 #6A6B04 #B13425
#6A6B04 #6A6B04 #6A6B04 #6A6B04 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6A6B04 #6A6B04 #6A6B04 #6A6B04
#E39D25 #E39D25 #6A6B04 #6B8CFF #E39D25 #6B8CFF #6B8CFF #E39D25 #6B8CFF #6A6B04 #E39D25 #E39D25
#6A6B04 #6A6B04 #6A6B04 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6A6B04 #6A6B04 #6A6B04
#6A6B04 #6A6B04 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6A6B04 #6A6B04
#B13425 #B13425 #6B8CFF #6B8CFF #6B8CFF #B13425 #B13425 #6B8CFF #6B8CFF #6B8CFF #B13425 #B13425
#B13425 #6A6B04 #6A6B04 #6A6B04 #B13425 #B13425 #B13425 #B13425 #6A6B04 #6A6B04 #6A6B04 #B13425
#6A6B04 #6A6B04 #6A6B04 #6A6B04 #B13425 #B13425 #B13425 #B13425 #6A6B04 #6A6B04 #6A6B04 #6A6B04

Da 05AB1E keine Farben oder Grafiken verarbeiten kann ... Wenn dies nicht akzeptabel ist, lösche ich sie.


Sie könnten einen Bash-Wrapper schreiben und sagen, Ihre Lösung istBash + 05AB1E
Pavel

1
@Pavel Ich habe darüber nachgedacht, schätze, ich werde diese Lösung mit der einer anderen verbinden; P.
Magic Octopus Urn

Ich kann nicht sagen, dass es "gewinnt", aber bitte behalte es, da es eine großartige Komprimierungswertung ist :)
xem

0

Sinclair BASIC - 573 Bytes

OK, das Spektrum kann die angegebenen RGB-Farben nicht anzeigen. Verwenden Sie daher die nächstmögliche Farbe.

10 let x=0:let y=0:let i=0
20 let a$="1c2e1f2i1c4c6b461d4646c46c1b464b6c46c14b6d4d1d6g1d4b24c1e4c24b24c14d2d4d6b4262b6246e2f6e2c1b2c6b1b2c1b2c1c4c1d4c14d1d4d"
30 let l=len a$
40 let i=i+1:let c=1:let p=0:let k=val a$(i)
50 if a$(i+1)>="a" then let c=code a$(i+1)-96:let i=i+1
60 print at y,x;ink k;"\::":let p=p+1:let x=x+1:if x=12 then let x=0:let y=y+1
70 if p<c then goto 60
80 if i<l then goto 40

Die Zeichenfolge ist die Farbe (1 = blau, 2 = rot usw.), gefolgt von einem Buchstaben, der angibt, wie oft sich der Block wiederholt (indem der ASCII-Wert minus 96 zu 1,2,3 usw. wird). Eine Zahl ohne Buchstaben danach zeichnet nur einen Block.

"\::"In Zeile 60 erfahren Sie, wie Sie Grafiken in einen Texteditor eingeben, bevor Sie sie in eine TAP-Datei umwandeln, um sie in den Fuse-Emulator zu laden. (Wird als Vollblockgrafik auf dem Bildschirm angezeigt).

Jedes Schlüsselwort ist ein Byte in Sinclair BASIC und enthält eine Anzahl von PEEK-Befehlen, nachdem es generiert wurde.

Es ist ein Mario


0

Perl - 399 171 Bytes

use MIME::Base64;$_='R0lGODdhDAAQAKEEAGuM/+OdJWprBLE0JSwAAAAADAAQAAACNoSHaAvpaoQMQQRmLdUXZM55XCUJDIVSmDCUjMhKrQSzSamxAbKP+5P6PQaqBiSxcCVpuJWkAAA7';
print decode_base64($_)

Schreibt die GIF-Datei nach stdout.

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.