Zadanie
Zakoduj ciąg, który w całości składa się z wielkich liter ( A-Z
), używając tylko zer i jedynek, używając własnego ulubionego schematu. Ale zasada nie jest taka prosta!
Zasady
- Twój program / funkcja musi poprawnie obsługiwać dowolny prawidłowy ciąg wejściowy o długości 8 .
- Wyniki muszą mieć tę samą długość dla wszystkich danych wejściowych.
- Wyniki muszą być odrębne dla różnych danych wejściowych.
- Wyniki muszą być jak najkrótsze.
- Wyniki muszą być zrównoważone od zera jeden (mieć liczbę takich samych jak zera). Nie muszą być równe (tj. Idealnie wyważone), ale twój wynik zostanie za to ukarany.
Nie musisz zapewniać programu / funkcji, która dekoduje twoje kodowanie.
Wejście i wyjście
- Można zdecydować się przyjąć dowolny zestaw 26 różnych znaków ASCII zamiast
A-Z
. - Możesz zdecydować o wypuszczeniu dowolnej pary wyraźnych drukowalnych znaków ASCII zamiast
0
i1
. - Nie wolno wypisywać liczb całkowitych zamiast ciągów bitowych, ponieważ mogą one mieć zera na początku i nie jest jasne, czy rzeczywiście spełniasz regułę 2.
- Jeśli zdecydujesz się odejść od wartości domyślnej (
A-Z
wejściowej i01
wyjściowej), musisz określić zestawy znaków wejściowych / wyjściowych w przesyłanym pliku.
Punktacja
- Wynik podstawowy: rozmiar kodu lub 1, jeśli Twój program jest pusty.
- Kary
- Kara za długość: pomnóż
1.5 ** (encoded length - 42)
- Nie ma premii za bycie krótszym; 42 to minimalna długość dla idealnie zbalansowanego kodowania 8-łańcuchowych ciągów o rozmiarze 26 alfabetu.
- Kara za brak równowagi: pomnóż
2 ** max(abs(ones - zeros) for every valid input of length 8)
, gdzieones
izeros
są liczbami odpowiednio 1 i 0 na każdym wyjściu. - Twoje zgłoszenie musi zawierać albo najgorszy przykład (wejście / wyjście), albo teoretyczne wyjaśnienie wartości kary.
- Kara za długość: pomnóż
- Najniższy wynik wygrywa.
Przykładowe przesłanie
Hipotetyczny esolang, 0 bajtów, wynik 74733,8906
Oto hipotetyczny esolang, w którym pusty program drukuje binarnie wszystkie kody ASCII znaków wejściowych.
Na przykład, jeśli podasz AAAAAAAA
jako dane wejściowe, program wydrukuje 1000001
8 razy z rzędu, tj 10000011000001100000110000011000001100000110000011000001
.
Wybrany alfabet wejściowy to CEFGIJKLMNQRSTUVXYZabcdefh
. W ten sposób wszystkie znaki są konwertowane na siedem cyfr w postaci binarnej, a liczby zero-jedynkowe różnią się tylko o jeden na znak (wszystkie mają trzy zera i cztery zera lub odwrotnie, gdy są konwertowane na binarne).
Długość wyjściowa wynosi zawsze 56, a najgorszy przypadek niezrównoważenia występuje na wejściach takich jak CCCCCCCC
, gdzie zera pojawiają się 8 razy więcej niż jedynki.
W związku z tym wynik tego przedłożenia wynosi 1.5 ** (56 - 42) * 2 ** 8 == 74733.8906
.