简单的部分:给定仅包含可打印ASCII字符(空格-波浪号)的输入字符串,计算每个字符的出现次数并以任何方便的格式返回结果。字符串的结果a%hda7a
应类似于:a:3, %:1, h:1, 7:1, d:1
。排序是不必要的,定界符和格式是可选的,但必须易于理解哪个数字对应哪个字符。输入的字符串中不得包含字符(a:3, b:0, c:0, d:1, ...
不正确)。
真正的挑战:
将代码中的每个字符转换为8位二进制数(如果使用的是UTF-16或类似格式,则转换为16位),并枚举每个字符0
。
对于每个字符(i
是枚举数),- i%7
bit 1 必须为1
。这些位从右开始编号。其他所有位都可以是您想要的。
让我们以以下代码为例:
[f]-xif)#f
将其转换为二进制,我们得到下面的数组。第一个数字(表示[
有1
在第0位置,这样一方面是OK。第二个数字(表示f
有1
在第1'位置,所以,一个是OK了。继续这样下去,你会看到上面的代码是有效的。
C 76543210位号 --------- ---------- [0101101 1 0-确定 f 011001 1 0 1-确定 ] 01011 1 01 2-确定 -0010 1 101 3-好 x 011 1 1000 4-好 i 01 1 01001 5-好 f 0 1 100110 6-确定 )0010100 1 0-确定 #001000 1 1 1-确定 f 01100 1 10 2-确定
如果将代码更改为:]f[-xif)#f
我们将获得以下序列的开始:
C 76543210 Bit number
- -------- ----------
] 01011101 0 <- OK
f 01100110 1 <- OK
[ 01011011 2 <- Not OK
- 00101101 3 <- OK
如我们所见,第三个字符在第二个位置[
没有字符1
(零索引),因此此代码无效。
测试用例:
Input:
This is a string containing some symbols: ".#!".#&/#
Output:
! " # & / : T a b c e g h i l m n o r s t y .
7 1 2 3 1 1 1 1 2 1 1 1 2 1 5 1 2 4 3 1 6 2 1 2
任何合理的输出格式都可以(最方便的方式)。例如,您可以拥有::7, !:1, ":2, #:3, &:1, /:1, T:1, a:2 ...
或[ ,7][!,1][",2][#,3][&,1]...
。以任何标准方式输出(从功能返回,打印到STDOUT等)
1i
模数7
。
00001010
。它也可能有用!:)
n%7
个位置使用的字符> pastie.org/pastes/10985263/text