Misi itu sederhana. Keluarkan nomor 2015 sebagai kode QR dan tulis ke file dengan nama newyear.png
dalam format PNG. Kode harus valid setiap hari, jadi mungkin Anda tidak akan menggunakan tahun ini.
Kode QR sebagai teks terlihat seperti ini:
# # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # #
# # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # #
Hasil yang ditulis newyear.png
harus mengandung kode QR dengan batas putih 5 piksel dan satu titik berukuran piksel. Itu tidak boleh mengandung apa pun selain kode QR.
code-golf
graphical-output
kolmogorov-complexity
new-years
Hannes Karppila
sumber
sumber
Jawaban:
File mentah, 184 byte = file 173-byte + nama file 11-byte
Saya harap ini tidak merusak celah standar apa pun. Tetapi hasilnya "memiliki kompleksitas kolmogorov yang tinggi dan cara terpendek untuk memproduksinya adalah (kemungkinan besar) hanya dengan mencetaknya secara harfiah ...".
Basis 64 file:
Alih-alih bermain golf program saya bermain golf gambar PNG yang dihasilkan. Kode QR adalah format yang sangat fleksibel, ada banyak parameter yang dapat diutak-atik: pengkodean input, tingkat koreksi kesalahan, dan gambar masking. Ini semua akan menghasilkan simbol yang berbeda dan dengan demikian dikompresi ke file dengan ukuran berbeda.
Jadi saya telah menulis sebuah program untuk menghasilkan semua kombinasi ini (menghasilkan 6720 file), dan kemudian menggunakan PNGOUT untuk memilih yang dikompres ke file terkecil. Ternyata menjadi file yang:
Ini disebut
test-3-1-H-Diamonds.bmp
jika Anda menggunakan program di bawah ini. Gambar ini panjangnya 175 byte setelah menjalankan PNGOUT. Dengan tingkat koreksi kesalahan "tinggi" dalam kode QR "versi 1", kita dapat memodifikasi hingga 8 piksel di bagian data tanpa merusak data. Dengan sedikit trial-and-error manual saya bisa menguranginya menjadi 173 byte yang disajikan di atas. Mungkin bisa lebih kecil tetapi melelahkan semua kombinasi membutuhkan 208 C 8 ~ 7.5 × 10 13 cek yang saya tidak akan lakukan;)Program Rust (0.13.0-nightly (5ba610265)) yang menghasilkan semua kombinasi:
sumber
Mathematica,
217177176166 byteInilah awalnya:
Lebih sedikit golf:
Kode QR dikodekan dalam nomor basis 36. Tentu saja, saya dapat menyandikannya dalam ASCII yang diperluas (basis 256), tetapi itu hanya akan mempersingkat string sebesar 30 byte, dan saya tidak yakin saya dapat melakukan konversi dengan biaya yang jauh lebih murah dari itu.
Tentu saja, ini adalah Mathematica, jadi ada juga 63-byte
tapi saya kira itu celah standar. ;) (Ini menghasilkan kode QR yang berbeda dari yang ada di tantangan, jadi saya kira kode QR tidak unik?)
sumber
36^^fl6ibg25c8z00uef53p4657dgd6hjzg41e5joead1qgz0l2xchqgso5r1a51v5no4zkw9v22okklg0cymmy2
sebagai gantinya.ToCharacterCode
danFromDigits
kemudian.)Matlab 545 Bytes
Hardcoded dalam pekerjaan manual yang melelahkan dan tanpa kompresi string mewah / percakapan . Saya tahu itu masih tidak sebagus jawaban yang lain tapi saya masih senang =)
Lebih tidak dapat dibaca (versi 545 yang sebenarnya):
Kami membuat matriks nol 31 x 31, tetapi mengaksesnya sebagai vektor untuk mengatur semua sel dengan indeks
b
ke1
. Trik yang saya gunakan adalah notasi bilangan bulat berurutan (seperti[1,2,3,4] = 1:4
) dan menghapus satu 100-digit dengan menambahkan skalar ke setiap nilai vektor.Mari kita lihat apakah ada yang bisa mengalahkan itu =)
sumber
unreadable
dengan benar ... pasti membacareadable
. melihat itu tepat setelah menyarankannya dan berharap siapa pun yang membaca edit saya menolaknya, tetapi ternyata mereka juga melewatkannya. maaf tentang hasil edit yang buruk ...Bash, 206
252 257BytesMenggunakan
convert
perintah yang dibundel dalamimagemagick
menyimpan 46 byte lebih banyak.Bertobat base64-encoded
pbm
gambar kepng
gambar denganimagemagick
'sconvert
.Disimpan 5 byte dengan menggunakan<<<
/ di sini-string .Versi lama (257 byte):
echo iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAQMAAAAB/jzhAAAABlBMVEX///8AAABVwtN+AAAAX0lEQVQI12PACdi/7G9gYJFUaGBgvaIHJG6CiMvrgGJyCxoY2H/tBxJ3rgIVekxnYGCU9WtgYDokBWSFezcwMPA/ARrwZwMDA4vwUwYG1nuTYMRdP6CYjDRQ9q8fbrsBLRkaYOOP83wAAAAASUVORK5CYII=|base64 -d > newyear.png
Hanya rantai perintah shell sederhana yang menulis
png
file yang disandikan base64 ke stdinbase64
yang menerjemahkannya karena-d
flag dan menulis stdout ke newyear.png.sumber
base64 -d>newyear.png<<<[the long string]
tapi saya tidak di mesin linux rn dan saya tidak tahu spasi mana yang wajibbase64 -d>newyear.png<<<[base64 string]
di Ubuntu 14.04.Python 2 + PIL,
216215Pada dasarnya port dari solusi Mathematica.
sumber
Alat Shell umum + Imagemagick, 215
Sedikit berbelit-belit
, tetapi lebih pendek dari jawaban shell lainnya.P1\n21 21
adalah format PBM P1sumber