多くのプログラミング言語は、印刷可能なASCII、タブ、改行のみを使用して記述されています。これらの97文字は、8ビットバイト(実際には256の異なる文字を保持できる!)に格納されます。これは非常に非効率的です-特に、すべてのバイトがカウントされるコードゴルフでは!この課題では、ベースコンバージョンを使用してスコアを下げることができます。
チャレンジ
プログラム/関数は、文字列または文字配列を入力として受け取り、それをベース97の数値として解釈します。次に、これを256ベースの数値に変換し、 この数値を表すために必要なシンボル(バイト)の数をカウントします。このカウントは、プログラム/関数の出力/戻り値になります。
base-2およびbase-10(2進および10進)を使用した簡単な例:入力がの場合、10110
10110 2 = 22 10(出力を表すのに2桁必要)なので、出力は2になります。同様に、1101 2は13 10になり、出力も2になり、110 2は6 10になるため、出力は1になります。
入力文字列には、95個の印刷可能なASCII文字すべて と、基本変換用の97個の記号のソースアルファベットを作成する改行\n
文字とリテラルタブを含めることができます。したがって、正確なアルファベットは次のようになります(and を実際のリテラルタブと改行で置き換えます。改行の後のリテラルスペースに注意してください)。\t
\t
\n
\t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
このアルファベットの順序は重要であることに注意してください。たとえば、base-97 \t
はdecimal 0
に対応し、decimal に!
対応します3
。
いくつかのテストケース:(空の文字列を処理する必要はありません)
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)
得点
エントリが印刷可能なASCII、改行、および/またはタブのみを使用している場合: プログラムのスコアは、入力として独自のソースコードが与えられると、プログラムの出力になります。
エントリが印刷可能なASCII、改行、またはタブではない文字を使用している場合:code-golfの ように、プログラムのスコアは単にバイト数です。