Banyak bahasa pemrograman ditulis menggunakan ASCII, tab, dan baris baru yang sepenuhnya dapat dicetak. 97 karakter ini kemudian disimpan dalam byte 8-bit (yang sebenarnya mampu menampung 256 karakter berbeda!), Yang sangat tidak efisien - terutama dalam kode-golf, di mana setiap byte dihitung! Dalam tantangan ini, Anda akan dapat mengurangi skor Anda dengan menggunakan konversi basis.
Tantangan
Program / fungsi Anda mengambil string atau karakter array sebagai input, yang kemudian diartikan sebagai nomor base-97 . Ini kemudian mengonversikannya ke angka dasar-256 , dan menghitung jumlah simbol (yaitu, byte) yang diperlukan untuk mewakili angka ini. Hitungan ini akan menjadi nilai output / pengembalian program / fungsi Anda.
Contoh sederhana menggunakan basis-2 dan basis-10 (biner dan desimal): jika inputnya adalah 10110
, output akan menjadi 2, karena 10110 2 = 22 10 (dua digit diperlukan untuk mewakili output). Demikian pula, 1101 2 menjadi 13 10 , memberikan output 2 juga, dan 110 2 menjadi 6 10 , sehingga outputnya adalah 1.
String input dapat berisi semua 95 karakter ASCII yang dapat dicetak, serta baris baru \n
dan tab literal \t
, yang menciptakan alfabet sumber 97 simbol untuk konversi basis Anda. Maka, alfabet yang tepat adalah (mengganti \t
dan \n
dengan tab dan baris literal aktual; perhatikan ruang literal mengikuti baris baru) :
\t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Perhatikan bahwa urutan alfabet ini penting: misalnya, base-97 \t
berhubungan dengan desimal 0
, dan !
sesuai dengan desimal 3
.
Beberapa testcases: (Anda tidak perlu menangani string kosong)
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)
Mencetak gol
Jika entri Anda hanya menggunakan ASCII yang dapat dicetak, baris baru dan / atau tab: Skor program Anda akan menjadi output dari program Anda, ketika diberi kode sumbernya sendiri sebagai input.
Jika entri Anda menggunakan karakter apa pun yang tidak dapat dicetak ASCII, baris baru atau tab: Skor program Anda hanyalah jumlah byte, seperti dalam kode-golf .