Viele Programmiersprachen werden ausschließlich mit druckbarem ASCII, Tabulatoren und Zeilenumbrüchen geschrieben. Diese 97 Zeichen werden dann in 8-Bit-Bytes gespeichert (die tatsächlich 256 verschiedene Zeichen aufnehmen können!), Was einfach schrecklich ineffizient ist - insbesondere beim Code-Golfen, bei dem jedes Byte zählt! In dieser Herausforderung können Sie Ihre Punktzahl mithilfe der Basiskonvertierung reduzieren.
Herausforderung
Ihr Programm / Ihre Funktion verwendet eine Zeichenfolge oder ein Zeichenarray als Eingabe, die dann als Base-97- Zahl interpretiert wird . Es konvertiert dies dann in eine Basis-256- Zahl und zählt die Anzahl der Symbole (dh Bytes), die erforderlich sind, um diese Zahl darzustellen. Diese Anzahl ist der Ausgabe- / Rückgabewert Ihres Programms / Ihrer Funktion.
Ein einfaches Beispiel mit base-2 und base-10 (binär und dezimal): Wenn die Eingabe ist 10110
, wäre die Ausgabe 2, da 10110 2 = 22 10 (zwei Ziffern zur Darstellung der Ausgabe erforderlich). In ähnlicher Weise wird 1101 2 zu 13 10 , was ebenfalls eine Ausgabe von 2 ergibt, und 110 2 wird zu 6 10 , so dass die Ausgabe 1 wäre.
Der Eingabestring kann alle 95 druckbaren ASCII - Zeichen enthält, sowie Newline \n
und wörtliche Registerkarte \t
, die eine schafft Quelle Alphabet von 97 Symbolen für Ihre Basis - Konvertierung. Das genaue Alphabet lautet daher (ersetzen Sie das \t
und \n
durch das eigentliche Literal-Tab und die neue Zeile; beachten Sie das Literal-Leerzeichen nach der neuen Zeile) :
\t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Beachten Sie, dass die Reihenfolge dieses Alphabets wichtig ist: Zum Beispiel \t
entspricht base-97 der Dezimalzahl 0
und !
entspricht der Dezimalzahl 3
.
Einige Testfälle: (Sie müssen keine leere Zeichenfolge verarbeiten)
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)
Wertung
Wenn Ihr Eintrag nur druckbares ASCII, Zeilenvorschub und / oder Tabulator verwendet: Die Punktzahl Ihres Programms ist die Ausgabe Ihres Programms, wenn als Eingabe ein eigener Quellcode angegeben wird.
Wenn Ihre Eingabe Zeichen enthält, die nicht in ASCII, Newline oder Tab gedruckt werden können: Die Punktzahl Ihres Programms entspricht einfach der Anzahl der Bytes, wie dies beim Code-Golf der Fall ist .