Muchos lenguajes de programación se escriben utilizando únicamente ASCII imprimible, pestañas y líneas nuevas. Estos 97 caracteres se almacenan en bytes de 8 bits (que en realidad son capaces de contener 256 caracteres diferentes), lo cual es terriblemente ineficiente, especialmente en el golf de código, ¡donde cada byte cuenta! En este desafío, podrá reducir su puntaje utilizando la conversión de base.
Desafío
Su programa / función toma una cadena o matriz de caracteres como entrada, que luego interpreta como un número base-97 . Luego convierte esto en un número base-256 y cuenta el número de símbolos (es decir, bytes) necesarios para representar este número. Este conteo será el valor de salida / retorno de su programa / función.
Un ejemplo simple usando base-2 y base-10 (binario y decimal): si la entrada es 10110
, la salida sería 2, ya que 10110 2 = 22 10 (dos dígitos necesarios para representar la salida). Del mismo modo, 1101 2 se convierte en 13 10 , dando una salida de 2 también, y 110 2 se convierte en 6 10 , por lo que la salida sería 1.
La cadena de entrada puede contener los 95 caracteres ASCII imprimibles, así como la nueva línea \n
y la pestaña literal \t
, que crea un alfabeto fuente de 97 símbolos para su conversión base. El alfabeto exacto será (sustituyendo el \t
y \n
con la pestaña literal real y la nueva línea; tenga en cuenta el espacio literal que sigue a la nueva línea) :
\t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Tenga en cuenta que el orden de este alfabeto es importante: por ejemplo, base-97 \t
corresponde a decimal 0
y !
corresponde a decimal 3
.
Algunos casos de prueba: (no necesita manejar una cadena vacía)
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)
Puntuación
Si su entrada usa solo ASCII imprimible, nueva línea y / o pestaña: La puntuación de su programa será la salida de su programa, cuando se le dé su propio código fuente como entrada.
Si su entrada usa caracteres que no son imprimibles ASCII, nueva línea o tabulación: La puntuación de su programa es simplemente el número de bytes, como en code-golf .