Muitas linguagens de programação são escritas usando apenas ASCII, guias e novas linhas imprimíveis. Esses 97 caracteres são armazenados em bytes de 8 bits (que são realmente capazes de conter 256 caracteres diferentes!), O que é terrivelmente ineficiente - especialmente no golfe de código, onde cada byte conta! Nesse desafio, você poderá reduzir sua pontuação usando a conversão base.
Desafio
Seu programa / função usa uma seqüência de caracteres ou matriz de caracteres como entrada, que depois interpreta como um número de base 97 . Em seguida, ele converte isso em um número de base 256 e conta o número de símbolos (ou seja, bytes) necessários para representar esse número. Essa contagem será o valor de saída / retorno do seu programa / função.
Um exemplo simples usando base-2 e base-10 (binário e decimal): se a entrada for 10110
, a saída será 2, pois 10110 2 = 22 10 (dois dígitos necessários para representar a saída). Da mesma forma, 1101 2 se torna 13 10 , dando uma saída de 2 também, e 110 2 se torna 6 10 , então a saída seria 1.
A sequência de entrada pode conter todos os 95 caracteres imprimíveis ASCII, bem como a nova linha \n
e a guia literal \t
, que cria um alfabeto de origem de 97 símbolos para sua conversão base. O alfabeto exacta será, assim, (substituindo a \t
e \n
com separador literal real e nova linha; nota o espaço literal seguinte a nova linha) :
\t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Observe que a ordem desse alfabeto é importante: por exemplo, a base-97 \t
corresponde ao decimal 0
e !
ao decimal 3
.
Alguns casos de teste: (você não precisa manipular uma string vazia)
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)
Pontuação
Se sua entrada usar apenas ASCII imprimível, nova linha e / ou guia: A pontuação do seu programa será a saída do seu programa, quando for fornecido seu próprio código-fonte como entrada.
Se a sua entrada usar caracteres que não sejam ASCII, nova linha ou guia imprimíveis: A pontuação do seu programa é simplesmente o número de bytes, como no código-golfe .