Molti linguaggi di programmazione sono scritti usando solo ASCII, tab e newline stampabili. Questi 97 caratteri vengono quindi memorizzati in byte a 8 bit (che sono effettivamente in grado di contenere 256 caratteri diversi!), Il che è terribilmente inefficiente, specialmente nel golf del codice, dove ogni byte conta! In questa sfida, sarai in grado di ridurre il tuo punteggio utilizzando la conversione di base.
Sfida
Il tuo programma / funzione accetta una stringa o un array di caratteri come input, che poi interpreta come un numero base-97 . Quindi converte questo in un numero base-256 e conta il numero di simboli (cioè byte) necessari per rappresentare questo numero. Questo conteggio sarà il valore di output / return del tuo programma / funzione.
Un semplice esempio usando base-2 e base-10 (binario e decimale): se l'ingresso è 10110
, l'output sarebbe 2, poiché 10110 2 = 22 10 (due cifre necessarie per rappresentare l'output). Allo stesso modo, 1101 2 diventa 13 10 , dando anche un output di 2, e 110 2 diventa 6 10 , quindi l'output sarebbe 1.
La stringa di input può contenere tutti i 95 caratteri ASCII stampabili, nonché una nuova riga \n
e una scheda letterale \t
, che crea un alfabeto di origine di 97 simboli per la conversione di base. L'alfabeto esatto sarà quindi (sostituendo la \t
e \n
con la scheda e la riga letterale effettive; notare lo spazio letterale seguendo la riga nuova) :
\t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Si noti che l'ordine di questo alfabeto è importante: ad esempio, base-97 \t
corrisponde a decimale 0
e !
corrisponde a decimale 3
.
Alcuni test: (non è necessario gestire una stringa vuota)
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)
punteggio
Se la tua voce utilizza solo ASCII, newline e / o tab stampabili: il punteggio del tuo programma sarà l'output del tuo programma, quando ti verrà dato il suo codice sorgente come input.
Se la tua voce utilizza caratteri non ASCII stampabili, newline o tab: il punteggio del tuo programma è semplicemente il numero di byte, come nel code-golf .