Am 1. November werden Programmierpuzzles und Code Golf abgeschlossen. In den nächsten 11 Monaten möchten wir einige Erinnerungen von unserer Zeit ohne Abschluss bewahren.
Schreiben Sie ein Programm, das das unten gezeigte PPCG-Favicon erzeugt.
- Das Bild muss mindestens 64x64 Pixel groß sein.
- Das Blau muss die Farbe # 62B0DF sein. Der Hintergrund kann weiß oder hellgrau sein.
- Das Bild muss nicht so pixelig sein, wie es hier ist.
- Alternativ können Sie Text (mit Abmessungen von mindestens 64 x 64 Zeichen ohne Leerzeichen) mit den hellen ANSI- Standardfarbcodes Cyan und Weiß erstellen .
- Eingebaute Bilder und das Importieren des PPCG-Logos sind nicht gestattet.
Dies ist Codegolf, daher gelten die Standardregeln. Kürzester Code in Bytes gewinnt.
Antworten:
Bash (OSX),
33272318 BytesSie haben den Mann gehört, wie wir wollen.
Mir ist bewusst, dass dies ein Beliebtheitswettbewerb ist. Aber hey, wenn man Golf programmieren kann, warum nicht?Es ist jetzt ein Code Golf. \ o / Dies war zum Zeitpunkt der Veröffentlichung gültig.
Irgendwann wurde sogar eine Ausnahme für mich gemacht! Aber als @AlexA. wies darauf hin...
Ich stimme dem zu und möchte daher nicht, dass dies als Antwort ausgewählt wird. Das heißt nicht, dass ich nicht immer noch versuchen werde, mehr Golf zu spielen. ;)
Vielen Dank an @ ΚριτικσιΛίθος für das Abschneiden von 6 Bytes mit einer schicken kurzen URL!
Vielen Dank an @ ev3commander für das Abschneiden weiterer 5 Bytes mit einer noch ausgefalleneren, kürzeren URL!
Vielen Dank an @kennytm für den Hinweis, dass ich die Protokollgröße reduzieren und die Anführungszeichen entfernen kann, wodurch ich weitere 4 Byte einsparen kann!
quelle
http://goo.gl/gviJDX
open http:goo.gl/gviJDX
http:yon.se/q
BitShift , 2795 Bytes
Dies gibt aus
Dies ist wahrscheinlich der kürzeste Code, mit dem man das Logo tatsächlich noch erkennen kann ... Ich habe eine schreckliche Sprache erstellt :(
Probieren Sie es hier aus
Hinweis:
Dies wurde übermittelt, bevor die Regeln geändert wurden. Nach den aktuellen Regeln ist diese Antwort ungültig. Ich werde es hier lassen, um vielleicht Leute zu inspirieren
quelle
JavaScript
Hinweis: Diese Antwort wurde vor einer wesentlichen Änderung der Regeln gegeben, sodass diese Antwort nicht konkurriert.
Dies wird über eine verrückte und großartige String-Verarbeitung in die Konsole Ihres Browsers gedruckt.
Ich habe eine kürzere Version davon gemacht, aber ich kann sie nirgendwo finden.
Chrome / Firefox
Diese Version verdoppelt sich nur auf jedem Pixel, sodass sie proportionaler aussieht
Safari
Das
long_string_here
ist ein ppm , ich habe dieses Skript vor einiger Zeit geschrieben, um ein beliebiges Bild auf die Konsole zu drucken .Wie funktioniert das? Nun, JavaScript hat eine Funktion,
console.log
mit der Sie CSS bereitstellen können, um die Nachricht zu formatieren.Ich habe das Unicode-Zeichen
█
und die Farbe, die die richtige Farbe, die aus den ppm abgerufen wird.So zeigen Sie einen anderen Bildlauf an:
convert my_img.png -resize 50x50 -trim -compress none -blur 1x2 -flatten -background white ppm:-
Kopieren Sie dann die Ausgabe nach<long_string_here>
Vollständiger Code
Da dies ziemlich umfangreich ist, habe ich den gesamten Code in Pastebins abgelegt, damit Sie sie ausführen können
Chrome / Firefox: Pastebin
Safari: Pastebin
Ergebnis
Firefox-Ergebnis
Safari-Ergebnis
quelle
Rubin mit Schuhen
Beispielausgabe:
quelle
Javascript (ES2015), 199 Byte
(+72 Bytes CSS)
Mein Code druckt das Logo
<body>
durch einige Unicode-Sequenzen in das Element einer Seite. Vorschläge zur Verbesserung des Codes sind willkommen (speziell für0
-pads)Javascript (Zeilenumbrüche zur besseren Lesbarkeit eingefügt)
CSS
Ergebnis
Ungolfed und erklärt
Wenn wir das ursprüngliche 16x16-PCG-Symbol betrachten, das ursprünglich veröffentlicht wurde, könnten wir die Informationen in einem Binärformat codieren.
Zum Beispiel die erste Zeile würde wie codiert werden ,
1100 0000 0000 0011
wo[0, 1]
Karten[blue, white]
. Jede binäre Zahl kann leicht in Dezimal - Format gespeichert werden , so1100 0000 0000 0011
ist49155
. Das Arrayenthält alle Informationen (im Dezimalformat) zu jeder Pixelfarbe. Jedes Element des Arrays repräsentiert eine zu zeichnende Linie. Beachten Sie, dass einige Zeilen vollblaue Linien sind
0
oder kürzer als16
Ziffern sind (eine Zeile, die mit einem blauen Pixel beginnt). Dann müssen Sie diese Binärzahlen mit der rechten Maustaste auffüllenDie
map
Funktion addiert links 15 Nullen plus die verkettete Binärzahl. Das Ergebnis wird also nach16
Pixeln auf der linken Seite aufgeteilt. Jetzt ist das Array tatsächlichSchauen Sie sich die Ziffern oben genauer an: Das PCG-Logo ist fast zu sehen. :)
Beachten Sie, dass wir 16 x 18 Byte (288 Byte) benötigen, wenn wir diese Informationen im Array speichern. Dieser Ansatz erfordert stattdessen 135 Bytes
Der nächste Schritt ist das Zeichnen jeder Linie. Das Konstrukt
Schleife über das Array
values
(ES6-Funktion) und wir fügen dem Körper hinzuDabei steht
[...l
] für die Binärzeichenfolge als Array. ZB würde die erste Zeile als gelesen werdendann verwenden wir wieder, um
map()
jeden Wert zu transformieren:wenn der Wert
0
dann ist, wird es einLEFT SEVEN EIGHTHS BLOCK (U+2589)
sonst ist es ein RaumEM SPACE (U+2003)
. Kurz diese Aufgabekonvertiert jedes Element
0
oder1
entweder in einen quadratischen Block oder in ein Leerzeichen: Dann wird das Array verbunden und zusammen mit einer nachfolgenden Zeilenumbruchsequenz an den Body angehängt.Das von mir verwendete CSS behebt das
line-height
und dasletter-spacing
(Ich habe es in Chrome getestet, daher kann das Ergebnis in anderen Browsern leicht abweichen.)quelle
Brainfuck, 120148 Bytes
Diese Antwort ist jetzt nicht wettbewerbsfähig. Das war, bevor die Regeln geändert wurden, und das hat absolut keine Hoffnung, als Code-Golf zu gewinnen.
Brainfuck-Code zur Ausgabe des Hex-Wertes des Bildes. Sehr, sehr lange.
Hier ist ein Pastebin-Link und die ersten paar Zeilen. https://paste.ee/p/LtcCy
quelle
Schnapp , 16 Blöcke
Sag mir, ob das ungültig ist.
quelle
Javascript ES6, 461 Bytes
Ich muss mehr an der Komprimierung arbeiten.
quelle
Bubblegum , 175 Bytes
Einer der seltenen Fälle, in denen Bubblegum für die grafische Ausgabe nützlich ist !
Führen Sie ein Terminal aus, das ANSI-Escape-Codes unterstützt.
Drehen Sie den Hexdump mit um
xxd -r
Hier ist ein Screenshot der Ausgabe:
Hinweis: Auf meinem Windows-Computer mit dem MinGW-Terminal gibt die Windows-Python-Binärdatei ANSI-Codes nicht korrekt aus, so dass das oben Genannte zutrifft
python <esolangs reference implementation>.py <infile> | cat
, es sollte jedoch auf Linux-Computern korrekt funktionieren.quelle
Javascript (ES6), 192 Bytes
Dies erfordert eine komprimierte Version eines SVG-D-Pfads. Leerzeichen werden entfernt, daher müssen alle Argumente eine einzelne Dezimalstelle sein. Daher wird jede Zahl mit 20 multipliziert, bevor sie in die eigentliche SVG geschrieben wird.
Ausgabe: Demo: https://jsfiddle.net/Luy6qj80/
quelle
LibreLogo ,
122116115 BytesCode:
Ergebnis:
Erläuterung:
Bisherige Versuche:
116 Bytes:
122 Bytes:
quelle
JavaScript, 680 Bytes
Nun, ich hatte dies bereits für den ursprünglichen Wettbewerb beendet, dessen Regeln drastisch geändert wurden. Dies ist definitiv nicht der kürzeste Code, den Sie finden können. Es wurde für den Beliebtheitswettbewerb entwickelt und erstellt Pixel für Pixel das ursprüngliche Favicon. Es hat auch einige weitere Funktionen. :)
Sie können die Funktion mit bis zu drei Parametern aufrufen:
m
geht meta und ändert die farbe entsprechend. Und wenn Sie es zu klein finden, verwenden Sie,b
um es von 16x16px auf 64x64px zu vergrößern . Zum Schluss wirda
das Logo animiert, als wäre es in eine blaue Tafel eingraviert. Der Wert ist die Geschwindigkeit für jeden Animationsschritt.Ungolfed
Ausgabe
Standard
Animiert
quelle
Python 3, 10.069 Bytes
Schreibt das Hex vom ursprünglichen Logo in eine neue Datei.
quelle
R, 189 Bytes
Mit Eindrücken zur Verdeutlichung:
Ich klaue schamlos die Methode aus einer alten Antwort von mir : Ich nehme die Basis-2-Darstellung von 16 Zahlen, mache sie zu einer 16x16-Matrix aus Einsen und Nullen und zeichne sie so, wie sie ist.
quelle
Google Blockly , 140 Blöcke
Produziert
Fügt auf Anfrage eine Erklärung hinzu. Probieren Sie es hier aus
Vorschläge zur Reduzierung der massiven Funktion auf der linken Seite sind willkommen!
quelle
Python 2, 211 Bytes
quelle
05AB1E , 49 Bytes
Probieren Sie es online!
quelle
Excel VBA,
252246245237 Bytes6 Bytes gespart dank Taylor Scott.
Dank der Inspiration von Taylor Scott konnten weitere 8 Bytes eingespart werden
Der Code muss von der Codepage eines Arbeitsblatts ausgeführt werden und fügt dem Arbeitsblatt die Form hinzu. Es ist nichts Besonderes, aber es verwendet direkt die abgerundete rechteckige Beschriftung, auf der das Symbol basiert. (Bei
AddShape
,106
entsprichtmsoShapeRoundedRectangularCallout
.)Das Formatieren fügt nicht viel hinzu, erleichtert jedoch das Lesen:
Es gibt auch eine einzeilige Lösung, die im unmittelbaren Fenster ausgeführt werden soll und 1 Byte länger ist:
quelle
()
inp()
und UmwandlungWith ActiveSheet. ...
zuWith[Sheet1]. ...
Sheet1
hat. Ich nehme an, wir können davon ausgehen, dass der Benutzer den Code in einer neuen Datei ausführt.Sheet1
, sollte dies wahrscheinlich eine akzeptierte Norm sein, solange Sie dies erwähnen ist Teil der Eingabe- / Ausgabebedingung als Teil Ihrer LösungSheet1
Objekt - Sie können also ein Byte löschen, indem Sie esWith[Sheet1].
durchWith Sheet1.
Sheet1
ist dies nur der Standard-Codename des ersten Blatts. Das ist eine schöne Reduzierung von 0,4%.MATLAB,
153-150140 BytesDer Code nimmt ein Array von 16-Bit-Zahlen auf (leider gibt es keine Möglichkeit, diese zu codieren, die die Anzahl der Bytes verringert, abgesehen vom Lesen einer vorgespeicherten Binärdatei). BEARBEITEN: Mit ein wenig Kreativität bei der Herstellung des Arrays habe ich 3 Bytes gespart, und mit ein bisschen mehr und einer zusätzlichen Variablen kann ich zusätzlich weitere 10 Bytes sparen.
Mit diesem Array wird es in eine Binärzeichenfolge konvertiert, bei der eine ASCII-1 für Blau und eine ASCII-0 für Weiß steht. Das Array ist zu diesem Zeitpunkt 2D, da jede der 16 Zahlen zu einer 16-stelligen Zeichenfolge wird.
Ich subtrahiere 47, um dies in ein Array von 1 und 2 zu konvertieren (das für das nächste Bit benötigt wird), wobei jedes Element ein Pixel darstellt. Auch dies bleibt als 2D und ist unsere Bilddaten.
Das Bild wird dann unter Verwendung des nächsten Nachbarn um den Faktor 8 vergrößert, um ein Bild zu erzeugen, das mindestens die erforderliche Mindestgröße von 64x64px hat - tatsächlich ist es 128x128, weil ich 64 durch 16 geteilt habe, um 8 zu erhalten> _ <(nicht Fragen!).
Abschließend wird dies anhand einer Farbkarte angezeigt, in der aus einer 1 eine weiße und aus einer 2 die erforderliche Blautönung # 62B0DF wird.
Dies ist die Ausgabe:
quelle
Verarbeitung, 211 Bytes
Speichern der Pixel in vorzeichenbehafteten Ganzzahlen (scheint der effizienteste Weg zu sein, ich werde vielleicht 2 ^ 64-Ganzzahlen ausprobieren) und dann in einem Frame drucken.
quelle
Swift (Spielplatz), 599 Bytes
Ich habe beschlossen, es auszuprobieren, da das Zeichnen in Swift ziemlich unkompliziert ist und normalerweise nicht so golfen wird. Endete wertvolle Bytes mit dem Text zu verlieren ... Verdammt Sie
NSDescriptiveVariableNames
!So sieht es auf dem Spielplatz aus:
Ich denke, ich könnte mehr Golf spielen, indem ich Dinge wie Aliasing
CGRectMake
, Gruppieren von Objekten in der a-Funktion usw.quelle
PHP, 145 Bytes, nicht konkurrierend
Ich sollte stattdessen Nicht-Leerzeichen und Farben verwenden, aber ich bin zu müde atm.
Vermutung, dass 10 Bytes oder so zur Zählung hinzugefügt werden, vielleicht mehr.
quelle
Excel VBA, 178 Bytes
Anonyme VBE-Sofortfensterfunktion, die keine Eingabe annimmt und das PCG-Favicon (genau wie in der obigen Eingabeaufforderung) in den Bereich ausgibt
quelle
C (gcc) , 188 Bytes
Probieren Sie es online!
Verwendet ANSI-Escape-Codes, um 128 horizontale und 64 vertikale Farbräume zu drucken.
(Bildgröße geändert.)
quelle
C ++ mit SFML , 607 Bytes
Code, der die Funktion aufruft:
Bedarf :
Sie benötigen eine gültige ttf-Datei
a.ttf
im aktuellen Verzeichnis, in dem die ausführbare Datei ausgeführt wird, damit die Schriftarten geladen werden können, um den Text anzuzeigenSie benötigen die entsprechenden SFML-DLLs im aktuellen Verzeichnis, in dem die ausführbare Datei ausgeführt wird
Ergebnis:
Erklärungen:
quelle
tcl / tk, 113
Tcl / tk, 144
quelle