许多编程语言都是使用可单独打印的ASCII,制表符和换行符编写的。然后将这97个字符存储在8位字节中(实际上能够容纳256个不同的字符!),这效率非常低-尤其是在代码高尔夫球中,每个字节都很重要!在这一挑战中,您将可以通过使用基本转化来降低得分。
挑战
您的程序/函数将字符串或字符数组作为输入,然后将其解释为以97为基数的数字。然后,它将其转换为以256为 基数的数字,并对表示该数字所需的符号(即字节)数进行计数。该计数将是您的程序/功能的输出/返回值。
一个使用base-2和base-10(二进制和十进制)的简单示例:如果输入为10110
,则输出将为2,因为10110 2 = 22 10(表示输出必须用两位数字表示)。类似地,1101 2变为13 10,也给出2的输出,而110 2变成6 10,所以输出为1。
输入字符串可以包含所有95个可打印的ASCII字符,以及换行符\n
和文字选项卡\t
,这 将为基础转换创建97个符号的源字母。确切的字母表因此将(取代\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。