Завдання
Кодуйте рядок, який повністю складається з великих алфавітів ( A-Z
), використовуючи лише нулі та ті, використовуючи власну улюблену схему. Але правило не таке просте!
Правила
- Ваша програма / функція повинна правильно обробляти будь-який дійсний рядок вводу довжиною 8 .
- Результати повинні мати однакову довжину для всіх входів.
- Результати повинні бути чіткими для різних вхідних даних.
- Результати повинні бути максимально короткими.
- Результати повинні бути врівноважені нулем один (мати кількість подібних до нулів). Вони не повинні бути рівними (тобто ідеально збалансованими), але ваш рахунок буде за це накладений штраф.
Вам не потрібно надавати програму / функцію, яка декодує ваше кодування.
Вхід і вихід
- Ви можете прийняти будь-який набір з 26 різних символів для друку ASCII замість
A-Z
. - Ви можете вирішити вивести будь-яку пару різних символів ASCII для друку замість
0
та1
. - Вам не дозволяється виводити ціле число замість бітового рядка, оскільки воно може мати провідні нулі і незрозуміло, чи дійсно ви виконали правило 2.
- Якщо ви вирішили відхилитися від типових (
A-Z
введення та01
виведення), вам слід вказати набори символів введення / виводу у вашому поданні.
Оцінка балів
- Базова оцінка: розмір коду або 1, якщо ваша програма порожня.
- Штрафні санкції
- Штраф на довжину: помножити
1.5 ** (encoded length - 42)
- Не існує бонусу за коротший термін; 42 - мінімальна довжина для ідеально збалансованого кодування 8-довжинних рядків з розміром 26 алфавіту.
- Штраф за незбалансованість: помножити
2 ** max(abs(ones - zeros) for every valid input of length 8)
, деones
іzeros
є рахунки 1 і 0 на кожному виході відповідно. - У вашій заяві має бути показаний найгірший приклад (введення / виведення) або теоретичне пояснення значення штрафу.
- Штраф на довжину: помножити
- Виграє найнижчий бал.
Приклад подання
Гіпотетичний езоланг, 0 байт, оцінка 74733.8906
Ось гіпотетичний езоланг, де порожня програма виводить усі ASCII коди вхідних символів у двійковій формі.
Наприклад, якщо ви подаєте AAAAAAAA
в якості введення, програма буде друкувати 1000001
8 разів поспіль, тобто 10000011000001100000110000011000001100000110000011000001
.
Введений алфавіт вибрано таким, щоб бути CEFGIJKLMNQRSTUVXYZabcdefh
. Таким чином, всі знаки перетворюються на сім цифр у двійковій формі, а значення нуля-один відрізняються лише одиницею на char (усі вони мають три 1-х і чотири 0-ти або навпаки при перетворенні на двійкові).
Довжина виходу завжди 56, і найгірший дисбаланс виникає на входах CCCCCCCC
, де нулі з’являються в 8 разів більше, ніж одиниці.
Тому оцінка цього подання є 1.5 ** (56 - 42) * 2 ** 8 == 74733.8906
.