Виклик
Напишіть програму, яка без втрат стискає та стискає текст ASCII. Він повинен бути спеціалізованим для того, щоб добре працювати з паліндромами, включаючи нечутливі до регістру та нечутливі до паліндроми пунктуації. Виграє найкраще стиснення з найменшим джерелом.
Оцінка балів
total_bytes_saved / sqrt(program_size)
- Найвищий результат виграє
total_bytes_saved
- на скільки байтів менше стислих рядків, ніж оригінали, загалом у наведених нижче тестах. program_size
- розмір вихідного коду в байтах програми стиснення та декомпресії. Код, поділений між двома, потрібно рахувати лише один раз.
Наприклад, якщо є 10 тестових випадків і 100-байтна програма зберегла 5 байт на 7 тестових випадках, 10 у кожній - 2, але останній тестовий випадок був на 2 байти довший, рішення набрало б 5,3 бала. ( (7 * 5 + 10 * 2 - 2) / sqrt(100) = 5.3
)
Випробування
tacocat
toohottohoot
todderasesareddot
amanaplanacanalpanama
wasitacaroracatisaw?
Bob
IManAmRegalAGermanAmI
DogeeseseeGod
A Santa at NASA
Go hang a salami! I'm a lasagna hog.
Правила
- Застосовуються стандартні лазівки.
- Стиснення має працювати на всіх друкованих текстових рядках ASCII (байтів 32-126, включно), а не лише паліндромах. Однак насправді не потрібно економити місце для будь-яких входів.
- Виведенням може бути будь-яка послідовність байтів або символів, незалежно від їх реалізації чи внутрішнього представлення (рядки, списки та масиви - це, наприклад, чесна гра). Якщо кодування до UTF-8, рахуйте байти, а не символи. Широкі рядки (наприклад, UTF-16 або UTF-32) заборонені, якщо тільки використовувані точкові коди можуть бути від 0 до 255.
- Вбудовані стискання / декомпресії не дозволяються.
Задля нашого задоволення розміщуйте стислі рядки зі своїм вихідним кодом.
ОНОВЛЕННЯ 1: Зарахування балів змінюється total_bytes_saved / program_size
на total_bytes_saved / sqrt(program_size)
, щоб надати більше ваги для кращого стиснення та меншої ваги для агресивного гольфу. Відповідно підкоригуйте свої бали.
UPDATE 2: фіксований , wasitacaroraratisaw?
щоб бутиwasitacaroracatisaw?
[32-126]
?
1000 *
частина справді потрібна, і ні, я не думаю, що це зробить партитуру більш «задовольняючою»;)
wasitacaroraratisaw?
це контрприклад тому