Misja jest prosta. Po prostu wypisz numer 2015 jako kod QR i zapisz go do pliku o nazwie newyear.png
w formacie PNG. Kod musi być ważny każdego dnia, więc może nie będziesz używał bieżącego roku.
Kod QR jako tekst wygląda następująco:
# # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # #
# # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # #
Zapisany wynik newyear.png
musi zawierać ten kod QR z białymi 5-pikselowymi ramkami i kropkami o rozmiarze jednego piksela. Nie może zawierać niczego poza kodem QR.
code-golf
graphical-output
kolmogorov-complexity
new-years
Hannes Karppila
źródło
źródło
Odpowiedzi:
Plik raw, 184 bajty = plik 173 bajtów + 11-bajtowa nazwa pliku
Mam nadzieję, że nie złamie to żadnych standardowych luk. Ale wynik „ma wysoką złożoność Kołmogorowa i najkrótszym sposobem jego wytworzenia (najprawdopodobniej) byłoby po prostu wydrukowanie go dosłownie ...”.
Baza 64 pliku:
Zamiast grać w golfa w programie, grałem w golfa w uzyskany obraz PNG. Kod QR jest bardzo elastycznym formatem, istnieje wiele parametrów, które można zakłócać: kodowanie wejścia, poziom korekcji błędów i obraz maskowania. Wszystkie one wygenerują różne symbole, a tym samym skompresowane do plików o różnych rozmiarach.
Napisałem więc program, który wygeneruje wszystkie te kombinacje (powstałe 6720 plików), a następnie użyję PNGOUT, aby wybrać kompresję do najmniejszego pliku. Okazuje się, że jest to plik, który:
Jest to wywoływane,
test-3-1-H-Diamonds.bmp
jeśli korzystałeś z poniższego programu. Ten obraz ma 175 bajtów długości po uruchomieniu PNGOUT. Dzięki „wysokiemu” poziomowi korekcji błędów w kodzie QR „wersja 1” możemy modyfikować do 8 pikseli w części danych bez rujnowania danych. Przy odrobinie ręcznych prób i błędów mogę go jeszcze bardziej zmniejszyć do 173 bajtów przedstawionych powyżej. Prawdopodobnie może być mniejszy, ale wyczerpanie wszystkich kombinacji wymaga 208 C 8 ~ 7,5 × 10 13 kontroli, których nie zamierzam robić;)Program Rust (0.13.0-night (5ba610265)), który generuje wszystkie kombinacje:
źródło
Mathematica,
217177176166 bajtówOto początek:
Mniej golfa:
Kod QR jest zakodowany w podstawowym numerze 36. Oczywiście, mógłbym zakodować go w rozszerzonym ASCII (podstawa 256), ale to tylko skróciłoby ciąg o 30 bajtów i nie jestem pewien, czy mogę wykonać konwersję kosztem znacznie mniejszym.
Oczywiście jest to Mathematica, więc jest też 63-bajtowy
ale myślę, że to standardowa luka. ;) (Daje to inny kod QR niż ten w konkursie, więc chyba kod QR nie jest unikalny?)
źródło
36^^fl6ibg25c8z00uef53p4657dgd6hjzg41e5joead1qgz0l2xchqgso5r1a51v5no4zkw9v22okklg0cymmy2
zamiast tego użyć .ToCharacterCode
iFromDigits
wtedy.)Matlab 545 Bytes
Zakodowany w żmudnej pracy ręcznej i bez żadnych fantazyjnych wbudowanych kompresji / konwersacji strun . Wiem, że to nie jest tak dobre, jak inne odpowiedzi, ale nadal jestem szczęśliwy =)
Bardziej nieczytelne (aktualna wersja 545):
Tworzymy macierz zerową 31 x 31, ale uzyskujemy do niej dostęp jako wektor, aby ustawić wszystkie komórki o indeksach
b
do1
. Sztuczki, których użyłem, to zapisanie kolejnych liczb całkowitych (jak[1,2,3,4] = 1:4
) i usunięcie jednej 100-cyfrowej przez dodanie skalara do każdej wartości wektora.Zobaczmy, czy ktokolwiek może to pokonać =)
źródło
unreadable
poprawnie ... zdecydowanie przeczytałemreadable
. zobaczyłem to zaraz po zasugerowaniu tego i miałem nadzieję, że ktokolwiek przeczytał moją edycję, odrzucił ją, ale najwyraźniej jej brakowało. przepraszam za złą edycję ...Bash, 206
252 257bajtówUżycie
convert
polecenia w pakiecieimagemagick
pozwala zaoszczędzić 46 bajtów.Konwertuje
pbm
obraz zakodowany w standardzie base64 napng
obraz zimagemagick
„s”convert
.Zapisano 5 bajtów za pomocą<<<
/ here-string .Stara wersja (257 bajtów):
echo iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAQMAAAAB/jzhAAAABlBMVEX///8AAABVwtN+AAAAX0lEQVQI12PACdi/7G9gYJFUaGBgvaIHJG6CiMvrgGJyCxoY2H/tBxJ3rgIVekxnYGCU9WtgYDokBWSFezcwMPA/ARrwZwMDA4vwUwYG1nuTYMRdP6CYjDRQ9q8fbrsBLRkaYOOP83wAAAAASUVORK5CYII=|base64 -d > newyear.png
Po prostu prosty łańcuch poleceń powłoki, który zapisuje
png
plik stdin w formacie base64,base64
który dekoduje go ze względu na-d
flagę i zapisuje jego stdout do newyear.png.źródło
base64 -d>newyear.png<<<[the long string]
ale nie jestem na komputerze z linuksem rn i nie wiem, która biała spacja jest obowiązkowabase64 -d>newyear.png<<<[base64 string]
Ubuntu 14.04.Python 2 + PIL,
216215Zasadniczo port rozwiązania Mathematica.
źródło
Wspólne narzędzia Shell + Imagemagick, 215
Trochę skomplikowane
, ale krótsze niż druga odpowiedź powłoki.P1\n21 21
jest w formacie PBM P1źródło