De nombreux langages de programmation sont écrits en utilisant uniquement ASCII imprimable, des onglets et des nouvelles lignes. Ces 97 caractères sont ensuite stockés dans des octets de 8 bits (qui sont en fait capables de contenir 256 caractères différents!), Ce qui est terriblement inefficace - en particulier dans le code-golf, où chaque octet compte! Dans ce défi, vous pourrez réduire votre score en utilisant la conversion de base.
Défi
Votre programme / fonction prend une chaîne ou un tableau de caractères en entrée, qu'il interprète ensuite comme un nombre en base 97 . Il convertit ensuite cela en un nombre de base 256 et compte le nombre de symboles (c'est-à-dire d'octets) nécessaires pour représenter ce nombre. Ce nombre sera la valeur de sortie / retour de votre programme / fonction.
Un exemple simple utilisant base-2 et base-10 (binaire et décimal): si l'entrée est 10110
, la sortie serait 2, puisque 10110 2 = 22 10 (deux chiffres nécessaires pour représenter la sortie). De même, 1101 2 devient 13 10 , ce qui donne également une sortie de 2, et 110 2 devient 6 10 , donc la sortie serait 1.
La chaîne d'entrée peut contenir les 95 caractères ASCII imprimables, ainsi que la nouvelle ligne \n
et l'onglet littéral \t
, ce qui crée un alphabet source de 97 symboles pour votre conversion de base. L'alphabet exact sera donc (en remplaçant le \t
et \n
par l'onglet littéral réel et la nouvelle ligne; notez l'espace littéral suivant la nouvelle ligne) :
\t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Notez que l'ordre de cet alphabet est important: par exemple, la base-97 \t
correspond à la décimale 0
et !
correspond à la décimale 3
.
Quelques tests: (vous n'avez pas besoin de gérer une chaîne vide)
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)
Notation
Si votre entrée utilise uniquement ASCII imprimable, nouvelle ligne et / ou onglet: Le score de votre programme sera la sortie de votre programme, lorsqu'il recevra son propre code source en entrée.
Si votre entrée utilise des caractères non imprimables ASCII, saut de ligne ou tabulation: le score de votre programme est simplement le nombre d'octets, comme dans code-golf .