Миссия проста. Просто выведите число 2015 в виде QR-кода и запишите его в файл с именем newyear.png
в формате PNG. Код должен быть действителен в любой день, поэтому, возможно, вы не будете использовать текущий год.
QR-код в виде текста выглядит так:
# # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # #
# # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # #
Записанный результат newyear.png
должен содержать этот QR-код с белыми 5-пиксельными границами и точками размером один пиксель. Он не должен содержать ничего, кроме QR-кода.
code-golf
graphical-output
kolmogorov-complexity
new-years
Ханнес Карппила
источник
источник
Ответы:
Необработанный файл, 184 байта = 173-байтовый файл + 11-байтовое имя файла
Надеюсь, это не сломает ни одной стандартной лазейки. Но вывод «имеет высокую колмогоровскую сложность и самый короткий способ его производства - это (скорее всего) просто напечатать его буквально ...».
База 64 файла:
Вместо игры в гольф, я получил изображение PNG. QR-код является очень гибким форматом, есть много параметров, которые можно изменить: кодирование ввода, уровень исправления ошибок и маскирующее изображение. Все они генерируют разные символы и, таким образом, сжимаются в файлы разных размеров.
Итак, я написал программу для генерации всех этих комбинаций (в результате 6720 файлов), а затем использую PNGOUT, чтобы выбрать ту, которая была сжата до самого маленького файла. Это файл, который:
Это называется,
test-3-1-H-Diamonds.bmp
если вы использовали программу ниже. Это изображение длиной 175 байт после запуска PNGOUT. Благодаря «высокому» уровню исправления ошибок в QR-коде «версия 1» мы можем изменять до 8 пикселей в части данных, не разрушая данные. С помощью небольшого количества проб и ошибок я могу уменьшить его до 173 байтов, представленных выше. Вероятно, он может быть меньше, но для исчерпания всех комбинаций требуется 208 C 8 ~ 7,5 × 10 13 проверок, которые я не собираюсь делать;)Программа Rust (0.13.0-nightly (5ba610265)), которая генерирует все комбинации:
источник
Mathematica,
217177176166 байтВот начало:
Меньше гольфа:
QR-код закодирован в базовом номере 36. Конечно, я мог бы закодировать его в расширенный ASCII (основа 256), но это сократит строку только на 30 байт, и я не уверен, что смогу выполнить преобразование по цене, намного меньшей этой.
Конечно, это Mathematica, так что есть также 63 байта
но я думаю, что это стандартная лазейка. ;) (В результате получается QR-код, отличный от того, который был в соревновании, поэтому я думаю, QR-код не уникален?)
источник
36^^fl6ibg25c8z00uef53p4657dgd6hjzg41e5joead1qgz0l2xchqgso5r1a51v5no4zkw9v22okklg0cymmy2
вместо этого.ToCharacterCode
иFromDigits
то, и другое .)Matlab 545 байт
Твердо закодирован в кропотливой ручной работе и без каких-либо необычных встроенных компрессий / разговоров . Я знаю, что это все еще не так хорошо, как другие ответы, но я все еще счастлив =)
Более нечитаемый (актуальная версия 545):
Мы создаем нулевую матрицу 31 x 31, но обращаемся к ней как к вектору, чтобы установить все ячейки с индексами
b
to1
. Уловки, которые я использовал, были обозначением последовательных целых чисел (например[1,2,3,4] = 1:4
) и удалением одного 100-значного числа путем добавления скаляра к каждому значению вектора.Посмотрим, сможет ли кто-нибудь победить это =)
источник
unreadable
правильно прочитал слово ... определенно прочиталreadable
. увидел это сразу после того, как предложил это, и надеялся, что тот, кто прочитал мою редакцию, отверг ее, но они явно пропустили ее. извините за плохое редактирование ...Баш, 206
252 257байтИспользование
convert
команды в комплектеimagemagick
экономит еще 46 байтов.Преобразует
pbm
изображение в кодировке base64 вpng
изображение сimagemagick
символом 'sconvert
.Сохранено 5 байтов с помощью<<<
/ здесь-строка .Старая версия (257 байт):
echo iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAQMAAAAB/jzhAAAABlBMVEX///8AAABVwtN+AAAAX0lEQVQI12PACdi/7G9gYJFUaGBgvaIHJG6CiMvrgGJyCxoY2H/tBxJ3rgIVekxnYGCU9WtgYDokBWSFezcwMPA/ARrwZwMDA4vwUwYG1nuTYMRdP6CYjDRQ9q8fbrsBLRkaYOOP83wAAAAASUVORK5CYII=|base64 -d > newyear.png
Простая цепочка команд оболочки, которая записывает в кодировке base64
png
файл в стандартный ввод,base64
который декодирует его из-за-d
флага и записывает свой стандартный вывод в newyear.png.источник
base64 -d>newyear.png<<<[the long string]
но я не на Linux-машине, и я не знаю, какие пробелы обязательныbase64 -d>newyear.png<<<[base64 string]
Ubuntu 14.04.Python 2 + PIL,
216215В основном это порт решения Mathematica.
источник
Общие инструменты Shell + Imagemagick, 215
Немного запутанный
, но короче, чем ответ другой оболочки.P1\n21 21
это формат PBM Р1источник