Вызов:
Ваша задача (если вы решите принять ее) состоит в том, чтобы сжать и распаковать « Полное собрание сочинений Уильяма Шекспира » объемом 5 МБ, как показано здесь: http://www.gutenberg.org/cache/epub/100/pg100.txt
(MD5: a810f89e9f8e213aebd06b9f8c5157d8
)
Правила:
- Вы должны принять вход через
STDIN
и выход черезSTDOUT
... - ... и вы должны предоставить идентичный распакованный результат для ввода.
- (Это означает, что вы должны иметь возможность
cat inpt.txt | ./cmprss | ./dcmpress | md5
получить тот же MD5, что и выше.) - (Все, что через
STDERR
, должно быть отброшено.)
- (Это означает, что вы должны иметь возможность
Вы должны использовать менее 2048 символов для общего исходного кода.- (Это не код-гольф. Вы не будучи забил на основе длины исходного кода. Это
являетсяпросто правилом , чтобы держать вещи конечно.) (Возьмите объединенную длину всего исходного кода, если вы его разбили.)
- (Это не код-гольф. Вы не будучи забил на основе длины исходного кода. Это
- Вы должны быть в состоянии (теоретически) обрабатывать аналогичные текстовые вводы тоже.
- (например , жесткое кодирование механизма , который только способен выводить предоставленный Шекспира ввод является неприемлемым.)
- (Сжатый размер других документов не имеет значения - при условии, что распакованный результат идентичен альтернативному вводу.)
- Вы можете использовать любой язык (и).
- (например, не стесняйтесь сжимать, используя
awk
и распаковывать, используяjava
)
- (например, не стесняйтесь сжимать, используя
- Вы можете написать две отдельные программы или комбинировать их с каким-либо «переключателем», как вам угодно.
- (Должны быть четкие демонстрации того, как вызывать режимы сжатия и распаковки)
- Вы не можете использовать какие-либо внешние команды (например, через
exec()
).- (Если вы используете язык оболочки - извините. Вам придется обойтись со встроенными модулями. Вы можете опубликовать «неприемлемый» ответ для обмена и получения удовольствия - но о нем не судят! )
- Вы не можете использовать какие-либо встроенные или предоставляемые библиотекой функции, цель которых состоит в сжатии данных (например
gz
, и т. Д.)- (В этом контексте изменение кодировки не считается сжатием. Здесь может быть применено некоторое усмотрение. Не стесняйтесь утверждать приемлемость вашего решения в представлении.)
- Пожалуйста, попробуйте повеселиться, если хотите принять участие!
Все хорошие соревнования имеют объективное определение победы; эрго:
- При условии соблюдения всех правил выигрывает наименьший сжатый вывод (в
STDOUT
байтах).- (Сообщите о своих результатах, пожалуйста, через
./cmprss | wc -c
)
- (Сообщите о своих результатах, пожалуйста, через
- В случае ничьей (идентичные размеры выходов), наибольшее количество участников проголосовало за.
- В случае второго розыгрыша (идентичных голосов сообщества), я выберу победителя, основываясь на совершенно субъективной оценке элегантности и чистого гения.
;-)
Как отправить:
Пожалуйста, отформатируйте вашу запись, используя этот шаблон:
<language>, <compressed_size>
-----------------------------
<description> (Detail is encouraged!)
<CODE...
...>
<run instructions>
Я бы посоветовал читателям и авторам общаться через комментарии - я считаю, что у людей есть реальная возможность учиться и стать лучшими программистами с помощью codegolf.stack.
Выигрыш:
Я скоро ухожу в отпуск: я могу (или не могу) следить за подачей заявок в течение следующих нескольких недель и завершу вызов 19 сентября. Я надеюсь, что это дает людям хорошую возможность подумать и представить - и для позитивного обмена техниками и идеями.
Если вы узнали что-то новое от участия (в качестве читателя или автора), пожалуйста, оставьте комментарий ободрения.
code-challenge
.