La misión es simple. Simplemente envíe el número 2015 como código QR y escríbalo en el archivo denominado newyear.png
en formato PNG. El código debe ser válido cualquier día, por lo que tal vez no use el año actual.
El código QR como texto se ve así:
# # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # #
# # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # #
El resultado escrito newyear.png
debe contener ese código QR con bordes blancos de 5 píxeles y puntos del tamaño de un píxel. No debe contener nada más que el código QR.
code-golf
graphical-output
kolmogorov-complexity
new-years
Hannes Karppila
fuente
fuente
Respuestas:
Archivo sin formato, 184 bytes = archivo de 173 bytes + nombre de archivo de 11 bytes
Espero que esto no rompa ningún vacío legal estándar. Pero el resultado "tiene una alta complejidad de kolmogorov y la forma más corta de producirlo sería (muy probablemente) imprimirlo literalmente ...".
Base 64 del archivo:
En lugar de jugar un programa de golf, jugué la imagen PNG resultante. El código QR es un formato muy flexible, hay muchos parámetros que se pueden modificar: la codificación de la entrada, el nivel de corrección de errores y la imagen de enmascaramiento. Todos estos generarán diferentes símbolos y, por lo tanto, se comprimirán en archivos de diferentes tamaños.
Así que escribí un programa para generar todas estas combinaciones (6720 archivos resultantes), y luego uso PNGOUT para elegir el que se comprimió en el archivo más pequeño. Resulta ser un archivo que:
Esto se llama
test-3-1-H-Diamonds.bmp
si utilizó el programa a continuación. Esta imagen es de 175 bytes mucho después de ejecutar PNGOUT. Con un nivel de corrección de error "alto" en el código QR de "versión 1", podemos modificar hasta 8 píxeles en la parte de datos sin arruinar los datos. Con un poco de prueba y error manual, puedo reducirlo aún más a 173 bytes presentados anteriormente. Probablemente puede ser más pequeño, pero agotar todas las combinaciones requiere 208 C 8 ~ 7.5 × 10 13 comprobaciones que no voy a hacer;)El programa Rust (0.13.0-nightly (5ba610265)) que genera todas las combinaciones:
fuente
Mathematica,
217177176166 bytesAquí hay un comienzo:
Menos golf:
El código QR está codificado en un número base 36. Por supuesto, podría codificarlo en ASCII extendido (base 256), pero eso solo acortaría la cadena en 30 bytes, y no estoy seguro de poder hacer la conversión a un costo mucho menor que eso.
Por supuesto, esto es Mathematica, así que también está el byte 63
pero supongo que es una escapatoria estándar. ;) (Esto produce un código QR diferente al del desafío, ¿así que supongo que el código QR no es único?)
fuente
36^^fl6ibg25c8z00uef53p4657dgd6hjzg41e5joead1qgz0l2xchqgso5r1a51v5no4zkw9v22okklg0cymmy2
en su lugar.ToCharacterCode
yFromDigits
luego.)Matlab 545 Bytes
Codificado en un trabajo manual minucioso y sin ninguna compresión / conversación de cadena incorporada elegante . Sé que todavía no es tan bueno como las otras respuestas, pero todavía estoy feliz =)
Más ilegible (la versión 545 real):
Creamos una matriz cero de 31 x 31, pero accedemos a ella como vector para establecer todas las celdas con los índices de
b
a1
. Los trucos que utilicé fueron la notación de enteros consecutivos (como[1,2,3,4] = 1:4
) y eliminar uno de los 100 dígitos al agregar un escalar a cada valor del vector.Veamos si alguien puede vencer eso =)
fuente
unreadable
correctamente ... definitivamente leíreadable
. vi eso justo después de sugerirlo y esperaba que quien leyera mi edición lo rechazara, pero aparentemente también lo extrañaron. lo de la mala edición ...Bash,
206252257bytesEl uso del
convert
comando incluidoimagemagick
guarda 46 bytes más.Convierte la
pbm
imagen codificada en base64 en unapng
imagen conimagemagick
'sconvert
.Guardado 5 bytes usando<<<
/ here-string .Versión anterior (257 bytes):
echo iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAQMAAAAB/jzhAAAABlBMVEX///8AAABVwtN+AAAAX0lEQVQI12PACdi/7G9gYJFUaGBgvaIHJG6CiMvrgGJyCxoY2H/tBxJ3rgIVekxnYGCU9WtgYDokBWSFezcwMPA/ARrwZwMDA4vwUwYG1nuTYMRdP6CYjDRQ9q8fbrsBLRkaYOOP83wAAAAASUVORK5CYII=|base64 -d > newyear.png
Solo una cadena de comandos de shell simple que escribe el
png
archivo codificado en base64 en stdinbase64
que lo decodifica debido a la-d
bandera y escribe su stdout en newyear.png.fuente
base64 -d>newyear.png<<<[the long string]
, pero no estoy en una máquina Linux rn y no sé lo que es obligatorio el espacio en blancobase64 -d>newyear.png<<<[base64 string]
en Ubuntu 14.04.Python 2 + PIL,
216215Básicamente un puerto de la solución de Mathematica.
fuente
Herramientas comunes de Shell + Imagemagick, 215
Un poco enrevesada
, pero más corta que la otra respuesta de shell.P1\n21 21
el formato PBM P1fuente