Ваша місія сьогодні - створити текстовий компресор.
Завдання
Ви напишете дві функції:
Пакера є функцією , яка приймає рядок ASCII символів (U + 0000 до U + 007F) і виводить рядок Unicode (U + 0000 до U + 10FFFF), що містять найменшу кількість символів можливо.
Розпакувальник це функція , яка приймає кодовані рядки Unicode і виводить в точності вихідної рядки ASCII.
Вхідні дані
Єдиний дозволений вхід - це рядок ASCII (для пакувальника) та упакована рядок Unicode (для упаковки). Ні вводу користувача, ні підключення до Інтернету, ні використання файлової системи.
Ваші функції можуть мати доступ до цього списку англійських слів . Ви можете використовувати цей список як локальний файл txt або скопіювати його вміст у вихідний код у вигляді рядка або масиву рядків .
Ви не можете жорстко кодувати фрагменти нижче у своїх функціях.
Вихідні дані
Єдиний дозволений вихід для обох функцій - це рядок.
Вихід розпакувальника повинен містити точно такі ж символи, що і вхід пакера.
Ваші входи та виходи можуть використовувати будь-яке кодування символів, що підтримує всі Unicode (UTF-8/16/32, GB18030, ...), оскільки оцінка буде залежати лише від кількості символів Unicode у висновку. Будь ласка, уточніть, яке кодування ви використовуєте.
Щоб підрахувати кількість символів Unicode у вашому виході, ви можете скористатися цим інструментом: http://mothereff.in/byte-counter
Оцінка балів
Ваш запис повинен мати можливість упакувати та розпакувати 10 наступних текстових фрагментів (які я взяв на цьому форумі).
Ваш результат буде сумою розмірів ваших 10 упакованих рядків (символами Unicode) + розміром ваших двох функцій (також у символах Unicode)
Не рахуйте розмір словника, якщо ви його використовуєте.
Будь ласка, включіть у свої записи "бал" кожного фрагмента та їх упаковану версію.
Виграє найнижчий рахунок.
Дані
Ось фрагменти для кодування для обчислення вашої оцінки:
1: Текст Ріка Ролла (1870b): Нам не дивно кодувати гольф, ви знаєте правила, і так я
Нам не чужих любити Ви знаєте правила, і я Повна прихильність - це те, про що я думаю Ви б не отримали цього від жодного іншого хлопця Я просто хочу сказати тобі, як я себе почуваю Треба зрозуміти Ніколи не здадуся тобі Ніколи тебе не підведу Ніколи не біжу і покине тебе Ніколи не змусить тебе плакати Ніколи не прощаюся Ніколи не скажу неправду і не зашкодить тобі Ми так довго знаємось Ваше серце болить, але Ти занадто сором’язливий, щоб сказати це Всередині ми обоє знаємо, що відбувається Ми знаємо гру і будемо її грати І якщо ви запитаєте мене, як я себе почуваю Не кажи мені, що ти занадто сліпий, щоб бачити Ніколи не здадуся тобі Ніколи тебе не підведу Ніколи не біжу і покине тебе Ніколи не змусить тебе плакати Ніколи не прощаюся Ніколи не скажу неправду і не зашкодить тобі Ніколи не здадуся тобі Ніколи тебе не підведу Ніколи не біжу і покине тебе Ніколи не змусить тебе плакати Ніколи не прощаюся Ніколи не скажу неправду і не зашкодить тобі (Ой, здавайся) (Ой, здавайся) (Ой) Ніколи не дам, ніколи не дам (Відмовитись) (Ой) Ніколи не дам, ніколи не дам (Відмовитись) Ми так довго знаємось Ваше серце болить, але Ти занадто сором’язливий, щоб сказати це Всередині ми обоє знаємо, що відбувається Ми знаємо гру і будемо її грати Я просто хочу сказати тобі, як я себе почуваю Треба зрозуміти Ніколи не здадуся тобі Ніколи тебе не підведу Ніколи не біжу і покине тебе Ніколи не змусить тебе плакати Ніколи не прощаюся Ніколи не скажу неправду і не зашкодить тобі Ніколи не здадуся тобі Ніколи тебе не підведу Ніколи не біжу і покине тебе Ніколи не змусить тебе плакати Ніколи не прощаюся Ніколи не скажу неправду і не зашкодить тобі Ніколи не здадуся тобі Ніколи тебе не підведу Ніколи не біжу і покине тебе Ніколи не змусить тебе плакати Ніколи не прощаюся Ніколи не скажу неправду і не зашкодить тобі
2: Гольфіст (412b): Golfing ASCII-art
'\. . |> 18 >> \. '. | O >>. 'о | \. | / \. | //. | jgs ^^^^^^^ `^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
3: алмаз числа (233b): Друкуйте цей алмаз
1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1
4: алфавіт чотири рази (107b): друк алфавіту чотири рази
а Б В Г Г Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ ью я qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba
5: Лірика Старого Макдональдса (203b): функція Old MacDonald
Старий Макдональд мав ферму, EIEIO, І на цій фермі у нього була корова, EIEIO, З му-му тут і з му-му, Тут му, там му, скрізь му, Старий Макдональд мав ферму, EIEIO!
6: Текст пісні рок цілодобово (144b): Рок навколо годинника
1, 2, 3 години, 4 години рок, 5, 6, 7 годин, 8 годин рок, 9, 10, 11 годин, 12 годин рок, Ми сьогодні будемо гойдатися цілодобово.
7: Hello World (296b): скажіть "Hello" світові в мистецтві ASCII
_ _ _ _ _ _ _ | | | | ___ | | | ___ __ _____ _ __ | | __ | | | | | _ | | / _ \ | | / _ \ \ \ / \ / / _ \ | '__ | | / _` | | | _ | __ / | | (_) | \ VV / (_) | | | | (_ | | _ | | _ | | _ | \ ___ | _ | _ | \ ___ () \ _ / \ _ / \ ___ / | _ | | _ | \ __, _ (_) | /
8: Ірландське благословення (210b): Старе ірландське благословення
Нехай дорога підійде вам назустріч Нехай вітер буде завжди у вас на спині Нехай сонце зігріває на вашому обличчі Дощі падають на ваших полях І поки ми знову не зустрінемося Нехай Бог тримає тебе в дуплі своєї руки
9: Була лірика старої леді (1208b): Була стара леді
Була стара баба, яка ковтала муху. Я не знаю, чому вона проковтнула цю муху, Можливо, вона помре. Була стара пані, ковтала павука, Це викручувалось, замикалось і ковтало всередині неї. Вона проковтнула павука, щоб зловити муху, Я не знаю, чому вона проковтнула цю муху, Можливо, вона помре. Була стара баба, ковтаючи птаха, Як безглуздо ковтати пташку. Вона проковтнула птаха, щоб зловити павука, Вона проковтнула павука, щоб зловити муху, Я не знаю, чому вона проковтнула цю муху, Можливо, вона помре. Була стара жінка, яка ковтала кота, Уявіть, що ковтати кота. Вона ковтала кота, щоб спіймати птаха, Вона проковтнула птаха, щоб зловити павука, Вона проковтнула павука, щоб зловити муху, Я не знаю, чому вона проковтнула цю муху, Можливо, вона помре. Була стара жінка, яка ковтала собаку, Що за свиня ковтати собаку. Вона ковтала собаку, щоб зловити кота, Вона ковтала кота, щоб спіймати птаха, Вона проковтнула птаха, щоб зловити павука, Вона проковтнула павука, щоб зловити муху, Я не знаю, чому вона проковтнула цю муху, Можливо, вона помре. Була стара жінка, яка ковтала коня, Вона померла, звичайно.
10: адреса gettysburg (1452b): наскільки випадковою є адреса Геттісбурга
Чотири бали і сім років тому наші батьки народили на цьому континенті нову націю, задуману на волі, і присвятили судження про те, що всі люди створені рівними. Зараз ми ведемо велику громадянську війну, перевіряючи, чи може ця нація, чи будь-яка нація, задумана та настільки віддана, довго витримає. Нас зустрічають на великому полі бою тієї війни. Ми присвятили присвятити частину цього поля як остаточного місця відпочинку тих, хто тут віддав своє життя, щоб жила ця нація. Ми повинні робити це цілком належно і правильно. Але, у більшому сенсі, ми не можемо присвятити, ми не можемо освятити, ми не можемо освятити цю землю. Хоробрі люди, живі та мертві, які боролися тут, освятили його, набагато вище нашої бідної сили, щоб додати чи применшити. Світ мало помітить, ані довго пам’ятатиме, що ми тут говоримо, але ніколи не можна забути, що вони тут зробили. Саме для нас, живих, тут ми будемо присвячені незавершеній роботі, яку вони, хто воював тут, поки що знатно просунулися. Ми швидше тут будемо присвячені великому завданню, що залишилося перед нами - щоб ми з цих шанованих мертвих зробили більшу відданість тій справі, за яку вони дали останню повну міру відданості, - що ми тут вирішуємо, що ці мертві не будуть даремно померли - що цей народ, при Бозі, матиме нове народження свободи, і що державна влада народу, для народу, не загине від землі.
Всього (нестиснене): 6135 символів / байт.
Веселіться!
private static final String RICK_ROLL_RETURN = "We're no strangers to love...