Mission ist einfach. Geben Sie einfach die Nummer 2015 als QR-Code aus und schreiben Sie sie in eine Datei newyear.png
im PNG-Format. Der Code muss jeden Tag gültig sein, daher sollten Sie möglicherweise das aktuelle Jahr nicht verwenden.
QR-Code als Text sieht so aus:
# # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # #
# # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # #
Das eingeschriebene Ergebnis newyear.png
muss den QR-Code mit weißen 5-Pixel-Rändern und 1-Pixel-Punkten enthalten. Es darf nichts anderes als QR-Code enthalten.
code-golf
graphical-output
kolmogorov-complexity
new-years
Hannes Karppila
quelle
quelle
Antworten:
Raw-Datei, 184 Bytes = 173-Byte-Datei + 11-Byte-Dateiname
Ich hoffe das bricht keine Standardlücken. Aber die Ausgabe "hat eine hohe Kolmogorov-Komplexität und der kürzeste Weg, sie zu produzieren, wäre (höchstwahrscheinlich), sie nur im wörtlichen Sinne zu drucken ...".
Basis 64 der Datei:
Anstatt ein Programm zu spielen, habe ich das resultierende PNG-Bild gespielt. QR-Code ist ein sehr flexibles Format, es gibt viele Parameter, an denen gefummelt werden kann: die Codierung der Eingabe, die Fehlerkorrekturstufe und das Maskierungsbild. Diese erzeugen alle unterschiedliche Symbole und werden so zu Dateien unterschiedlicher Größe komprimiert.
Also habe ich ein Programm geschrieben, um alle diese Kombinationen (die 6720 Dateien ergeben) zu generieren und dann mit PNGOUT diejenige auszuwählen, die auf die kleinste Datei komprimiert wurde. Es stellt sich heraus, dass es sich um eine Datei handelt, die:
Dies wird aufgerufen,
test-3-1-H-Diamonds.bmp
wenn Sie das folgende Programm verwendet haben. Dieses Image ist 175 Byte lang, nachdem PNGOUT ausgeführt wurde. Mit der "hohen" Fehlerkorrekturstufe im QR-Code "Version 1" können wir bis zu 8 Pixel im Datenteil ändern, ohne die Daten zu beschädigen. Mit ein bisschen manuellem Ausprobieren kann ich es weiter auf 173 Bytes reduzieren, die oben dargestellt wurden. Es kann wahrscheinlich kleiner sein, aber für die Erschöpfung aller Kombinationen sind 208 C 8 ~ 7,5 × 10 13 Prüfungen erforderlich , die ich nicht ausführen werde;)Das Programm Rust (0.13.0-nightly (5ba610265)), das alle Kombinationen generiert:
quelle
Mathematica,
217177176166 BytesHier ist ein Anfang:
Weniger Golf:
Der QR-Code ist in einer Basis 36-Nummer codiert. Natürlich könnte ich es in erweitertem ASCII (Basis 256) codieren, aber das würde die Zeichenfolge nur um 30 Byte verkürzen, und ich bin nicht sicher, ob ich die Konvertierung zu einem viel geringeren Preis durchführen kann.
Das ist natürlich Mathematica, also gibt es auch das 63-Byte
aber ich denke, das ist eine Standardlücke. ;) (Dies erzeugt einen anderen QR-Code als der in der Challenge, also denke ich, dass der QR-Code nicht eindeutig ist?)
quelle
36^^fl6ibg25c8z00uef53p4657dgd6hjzg41e5joead1qgz0l2xchqgso5r1a51v5no4zkw9v22okklg0cymmy2
stattdessen verwenden.ToCharacterCode
undFromDigits
dann brauchen .)Matlab 545 Bytes
In mühsamer Handarbeit und ohne ausgefallene eingebaute Komprimierung / Konversation fest programmiert . Ich weiß, es ist immer noch nicht so gut wie die anderen Antworten, aber ich bin immer noch glücklich =)
Unleserlicher (die aktuelle 545-Version):
Wir erstellen eine 31 x 31-Nullmatrix, greifen aber als Vektor darauf zu, um alle Zellen mit den Indizes von
b
bis zu setzen1
. Die Tricks, die ich benutzte, waren die Notation von aufeinanderfolgenden ganzen Zahlen (wie[1,2,3,4] = 1:4
) und das Entfernen einer der 100 Stellen durch Hinzufügen eines Skalars zu jedem Wert des Vektors.Mal sehen, ob das jemand schlagen kann =)
quelle
unreadable
richtig gelesen ... auf jeden Fall gelesenreadable
. Ich habe das gleich gesehen, nachdem ich es vorgeschlagen hatte, und ich hatte gehofft, dass jeder, der meine Ausgabe gelesen hat, es abgelehnt hat, aber sie haben es anscheinend auch verpasst. Entschuldigung für die schlechte Bearbeitung ...Bash, 206
252 257BytesDie Verwendung des in
convert
Paketen enthaltenen Befehlsimagemagick
spart 46 weitere Bytes.Konvertiert das Base64-kodierte
pbm
Bild in einpng
Bild mitimagemagick
'sconvert
.5 Bytes mit<<<
/ here-string gespeichert .Alte Version (257 Bytes):
echo iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAQMAAAAB/jzhAAAABlBMVEX///8AAABVwtN+AAAAX0lEQVQI12PACdi/7G9gYJFUaGBgvaIHJG6CiMvrgGJyCxoY2H/tBxJ3rgIVekxnYGCU9WtgYDokBWSFezcwMPA/ARrwZwMDA4vwUwYG1nuTYMRdP6CYjDRQ9q8fbrsBLRkaYOOP83wAAAAASUVORK5CYII=|base64 -d > newyear.png
Nur eine einfache Shell-Befehlskette, die die base64-kodierte
png
Datei in stdin schreibtbase64
, dekodiert sie aufgrund des-d
Flags und schreibt ihre stdout in newyear.png.quelle
base64 -d>newyear.png<<<[the long string]
Ich kann wahrscheinlich Zeichen mit so etwas speichern, aber ich bin nicht auf einem Linux-Rechner und ich weiß nicht, welches Whitespace obligatorisch istbase64 -d>newyear.png<<<[base64 string]
Ubuntu 14.04 zu arbeiten.Python 2 + PIL,
216215Grundsätzlich ein Port der Mathematica-Lösung.
quelle
Gemeinsame Shell-Tools + Imagemagick, 215
Ein bisschen verschlungen
, aber kürzer als die andere Shell-Antwort.P1\n21 21
dem PBM P1-Formatquelle