考虑以下过程:
以一个非负整数N.
如27
。将其拆分为整数
N - floor(N/2)
和floor(N/2)
(“较大”和“较小”的一半)并按该顺序写入。
例如27
成为14 13
。删除空间以将整数连接成一个更大的新整数。
例如14 13
成为1413
。重复步骤2和3所需的次数。
例如1413
→交通707 706
→交通707706
→交通353853 353853
→交通353853353853
→交通...
这项挑战就是要做到这一点,但并不总是在基础10中。
挑战
编写一个包含三个数字B,N和S的程序:
B是2到10的整数,它是N的底数(二进制到十进制)。
N是非负整数,适用于拆分重新合并过程。为了使用户输入更容易,它以B 的字符串而不是整数给出。
S是一个非负整数,它是重复拆分-重新加入过程的次数。
程序的输出是经过S个拆分连接过程后,基数B中N的字符串表示形式。
当S 0
为时,不进行拆分,因此输出始终为N。
当N 0
为时,所有拆分均具有形式0 0
并0
再次减小为,因此输出始终为0
。
例子
B = 10, N = 27, S = 1
→1413
B = 10, N = 27, S = 2
→707706
B = 9, N = 27, S = 1
→1413
B = 9, N = 27, S = 2
→652651
B = anything, N = anything, S = 0
→N
B = anything, N = 0, S = anything
→0
表用于与N的所有B = 1
为S = 0
到7
:
B S=0 S=1 S=2 S=3 S=4 S=5 S=6 S=7
2 1 10 11 101 1110 111111 10000011111 10000100001000001111
3 1 10 21 1110 202201 101101101100 1201201201212012012011 212100212102121002121212100212102121002120
4 1 10 22 1111 223222 111311111311 2232222232322322222322 11131111131311311111311113111113131131111131
5 1 10 32 1413 432431 213441213440 104220331443104220331442 2433241322130211014044424332413221302110140443
6 1 10 33 1514 535535 245550245545 122553122553122553122552 4125434125434125434125441254341254341254341254
7 1 10 43 2221 11111110 40404044040403 2020202202020220202022020201 10101011010101101010110101011010101101010110101011010100
8 1 10 44 2222 11111111 44444454444444 2222222622222222222226222222 11111113111111111111131111111111111311111111111113111111
9 1 10 54 2726 13581357 62851746285173 3142536758708231425367587081 15212633743485606571782880411521263374348560657178288040
10 1 10 55 2827 14141413 70707077070706 3535353853535335353538535353 17676769267676676767692676771767676926767667676769267676
表与用于S =随机N的所有乙0
到3
:
B S=0 S=1 S=2 S=3
2 11011 11101101 11101111110110 11101111110111110111111011
3 2210 11021101 20102012010200 1001212100121210012121001211
4 1113 230223 112112112111 2302302302323023023022
5 101 2323 11341134 31430423143042
6 120 4040 20202020 1010101010101010
7 134 5252 24612461 1230456412304564
8 22 1111 445444 222622222622
9 4 22 1111 505505
10 92 4646 23232323 1161616211616161
细节
- 通过标准输入或命令行输入。输出到标准输出。
- 您可以编写一个采用B,N和S并正常打印结果或将其返回(作为字符串)的函数,而不是程序。
- B,N和S可以采用任何顺序。
- 所有产生十进制值低于2 32的输出的输入都应工作。
- N以通常的方式表示。即最重要的数字在前,除了被写入的零本身外,没有前导零
0
。(输出00
代替0
无效。) - 以字节为单位的最短代码获胜。
当且仅当你喜欢我的挑战,考虑给予砌块建筑成群的僵尸!一些爱 :)