Виклик:
Ваше завдання (якщо ви вирішите прийняти це) - стиснути та розпакувати 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
.