Wiele języków programowania jest pisanych przy użyciu wyłącznie ASCII, zakładek i znaków nowej linii do wydruku. Te 97 znaków jest następnie zapisywanych w 8-bitowych bajtach (które są w stanie pomieścić 256 różnych znaków!), Co jest po prostu strasznie nieefektywne - szczególnie w grze w golfa, gdzie liczy się każdy bajt! W tym wyzwaniu będziesz w stanie obniżyć swój wynik za pomocą konwersji podstawowej.
Wyzwanie
Twój program / funkcja pobiera ciąg znaków lub tablicę znaków jako dane wejściowe, które następnie interpretuje jako liczbę podstawową 97 . Następnie konwertuje to na liczbę podstawową 256 i zlicza liczbę symboli (tj. Bajtów) niezbędnych do przedstawienia tej liczby. Liczba ta będzie wartością wyjściową / zwracaną przez twój program / funkcję.
Prosty przykład z użyciem base-2 i base-10 (binarny i dziesiętny): jeśli wejście jest 10110
, wyjście będzie 2, ponieważ 10110 2 = 22 10 (dwie cyfry potrzebne do przedstawienia wyjścia). Podobnie 1101 2 staje się 13 10 , co daje również wynik 2, a 110 2 staje się 6 10 , więc wtedy wynik wyniósłby 1.
Ciąg wejściowy może zawierać wszystkie 95 znaków ASCII do wydrukowania, a także \n
tabulację nowego wiersza i literału \t
, która tworzy alfabet źródłowy 97 symboli dla konwersji podstawowej. Dokładna alfabet będzie zatem (zastępując \t
oraz \n
z rzeczywistego karcie dosłownym i nowa linia; uwaga dosłowne następujące miejsca w nowej linii) :
\t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Zauważ, że kolejność tego alfabetu jest ważna: na przykład base-97 \t
odpowiada dziesiętnej 0
i !
dziesiętnej 3
.
Niektóre przypadki testowe: (nie musisz obsługiwać pustego ciągu)
Input Output
'example@domain.com' 15
'All your base are belong to us!' 26
' abcd' 9
'~ abcd' 10
'ABCDEFGHIJK' 9
'zyxwvutsrpq' 10
'{".~"}.~' 7
'\t\t\t\t\t\t\t\t' 1 (with \t a literal tab; the result is 0, which can be represented with 1 byte)
'!\t\t\t\t\t\t\t\t' 7 (with \t a literal tab)
Punktacja
Jeśli twój wpis używa tylko ASCII do wydruku, nowej linii i / lub tab: Wynik twojego programu będzie wyjściem twojego programu, jeśli podasz własny kod źródłowy jako dane wejściowe.
Jeśli twój wpis używa znaków, które nie są drukowalne ASCII, nowej linii lub tabulacji: Wynik twojego programu to po prostu liczba bajtów, jak w golfie kodowym .