Это будет довольно сложная задача для игры в гольф.
Входные данные: к любому URL должен быть прикреплен протокол, например, http://codegolf.stackexchange.com (который будет нашим тестовым примером)
Вывод: сгенерированный QR-код, представляющий этот URL-адрес, который при сканировании интеллектуальным устройством приведет вас к этому URL-адресу в браузере смарт-устройства.
Правила для этого Code-Golf
- Как обычно, маленький код выигрывает.
- Нет внешних веб-ресурсов, библиотек или плагинов для генерации кода для вас. Ваш код должен рассчитать изображение QR-кода.
- Вывод может быть представлен изображением, сгенерированным HTML5 / CSS3, или даже с использованием соответствующих блоков Unicode, или, если ASCII вашей платформы имеет его, через символы ASCII, которые могут формировать QR-код (этот последний предназначен для Commodore 64 Basic, Amiga QBasic, Amstrad Basic и т. Д.), Но он должен генерировать вывод QR-кода, чтобы я мог сканировать код.
- За записями кода следует сопровождаемый сгенерированный вывод, либо снимок экрана вывода после выполнения вашего кода, либо ссылка, отображающая вывод (в зависимости от ситуации, которая лучше всего подходит)
- Вы должны проверить свой код по URL-адресу « http://codegolf.stackexchange.com » и сообщить о результатах в соответствии с правилами 3-4.
- Вы также должны протестировать свой код с выбранным URL-адресом и сообщить о результатах в соответствии с правилами 3-4.
Ссылки:
1) http://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders
2) http://www.pclviewer.com/rs2/calculator.html
3) http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
4) http://en.wikipedia.org/wiki/QR_code
5) http://www.qrstuff.com/ для вдохновения ...;)
code-golf
graphical-output
browser
Уолли Уэст
источник
источник
Ответы:
Python 3: 974 символа [примечание]
Далее бейте уродливой палкой, смотрите блокнот на GH-Gist . Python 3 имеет встроенную кодировку ASCII-85, которая помогает с молнии сосиски. Более продвинутые встроенные алгоритмы сжатия 3 (LZMA), похоже, плохо работают с такими мелочами.
Сжатие очень изменчиво при смене символов, было почти искушение написать что-то, что будет случайным образом пытаться использовать разные однобуквенные имена для переменных, чтобы минимизировать размер архива.
Python 2:
1420 1356 10851077 символовЯ прочитал первый аргумент, переданный при вызове, который может быть строкой длиной до 106 символов. Выводом всегда является QR-код версии 5-L и маска 4, что означает, что он имеет размеры 37x37 модулей и может выдержать только ~ 5% урона.
Единственными зависимостями программы являются
numpy
(манипуляции с массивами) иmatplotlib
(только отображение); все кодирование Рида-Соломона, упаковка данных и расположение модулей обрабатываются в предоставленном коде . Что касается RS, я в основном ограбил функции Викиверситета ... для меня это все еще своего рода черный ящик. Узнал тонну о QR в любом случае.Вот код, прежде чем я победил его уродливой палкой:
После:
(полагаясь на вкладку, чтобы считать 4/8 / любое количество пробелов> = 2., не уверен, насколько хорошо она будет копировать)
Поскольку это так долго, мы можем заархивировать его (видел, как кто-то делал это где-то еще, забыл, кто, хотя :(), чтобы сохранить еще несколько символов, в результате чего общее количество уменьшилось до
10851077, потому чтоpylab
это грязно:Если вы замените последнюю строку на следующую (она добавляет 62 символа), вы получите почти идеальный вывод, но другая все равно сканирует, и так далее.
источник
struct
вызов и некоторые ненужные нажатия, просто обрезая мою «главную строку» ...