To jest moje pierwsze wyzwanie na ppcg!
Wejście
Ciąg składający się z dwóch różnych znaków ascii. Na przykład
ABAABBAAAAAABBAAABAABBAABA
Wyzwanie
Zadaniem jest odkodowanie tego ciągu zgodnie z następującymi regułami:
- Pomiń pierwsze dwa znaki
- Podziel resztę ciągu na grupy po 8 znaków
- W każdej grupie zamień każdy znak na,
0
jeśli znak ten jest taki sam jak pierwszy znak oryginalnego łańcucha, i na1
inny - Teraz każda grupa reprezentuje bajt. Konwertuj każdą grupę na znak z bajtowego kodu znaków
- Połącz wszystkie postacie
Przykład
Dekodujmy powyższy ciąg.
AB AABBAAAA AABBAAAB AABBAABA
^^ ^ ^ ^
| | | |
| \---------|---------/
| |
Skip Convert to binary
Zauważ, że A
jest to pierwszy znak w oryginalnym ciągu znaków i B
jest on drugim. W związku z tym, należy wymienić każdy A
z 0
a każdy B
z 1
. Teraz otrzymujemy:
00110000 00110001 00110010
który jest [0x30, 0x31, 0x32]
w formacie binarnym. Wartości te reprezentują ["0", "1", "2"]
odpowiednio znaki , więc końcowy wynik powinien być 012
.
Punktacja
Jest to oczywiście code-golf , co oznacza, że kod powinien być jak najkrótszy. Wynik mierzony jest w bajtach.
Ograniczenia i format IO
Obowiązują standardowe zasady. Oto kilka dodatkowych zasad:
- Możesz założyć prawidłowe dane wejściowe
- Łańcuch wejściowy składa się z dokładnie dwóch różnych znaków
- Pierwsze dwa znaki są różne
- Minimalna długość ciągu wejściowego wynosi 2 znaki
- Długość zawsze daje 2 modulo 8
- Możesz założyć, że ciąg będzie zawsze składał się tylko z drukowalnych znaków ASCII
- Zarówno na wejściu, jak i w dekodowanym ciągu
- Wiodące i końcowe białe znaki są dozwolone w danych wyjściowych (wszystko, co pasuje
/\s*/
)