星期一迷你高尔夫:每个星期一发布一系列简短的代码高尔夫问题(希望!)。
(对不起,我又迟到了;昨天和今天基本上都离开了我的电脑。)
美国程序员(尤其是代码高尔夫球手)肯定喜欢任意整数序列。我们甚至拥有一个专门用于这些序列的完整站点,目前大约有200,000个条目。在这个挑战中,我们将实现另一组这些序列。
挑战
您面临的挑战是编写一个程序或函数,该程序或函数采用整数N,并输出以10为底的整数序列,其中每个下一个整数都是通过以下方式确定的:
- 从1开始
对于先前整数的以10为底的表示形式的每个数字D:
- 如果D为0,则将当前整数加1。
- 否则,乘以目前的整数d。
细节
- 您可以假设0 < N <2 31。
- 您必须从输入数字开始输出序列中的每个整数,直到达到小于10的数字。
- 输出可以是数组,也可以是由空格,逗号,换行符或它们的组合分隔的字符串。
- 允许使用尾随空格和/或换行符,但不能使用尾部逗号。
- 永远不应有任何前导零。
例子
范例1: 77
这个例子很简单:
77 = 1*7*7 = 49
49 = 1*4*9 = 36
36 = 1*3*6 = 18
18 = 1*1*8 = 8
因此,正确的输出为77 49 36 18 8
。
范例2: 90
这里我们有:
90 = 1*9+1 = 10
10 = 1*1+1 = 2
因此输出将是90 10 2
。
范例3: 806
从左到右阅读方程式:
806 = 1*8+1*6 = 54 (((1*8)+1)*6)
54 = 1*5*4 = 20
20 = 1*2+1 = 3
输出应为806 54 20 3
。
测试用例
每行中的第一个数字是输入,实线是预期的输出。
77 49 36 18 8
90 10 2
249 72 14 4
806 54 20 3
1337 63 18 8
9999 6561 180 9
10000 5
8675309 45369 3240 25 10 2
9999999 4782969 217728 1568 240 9
1234567890 362881 2304 28 16 6
作为参考,以下是10到100之间的下一个整数:
Current | Next
--------+-----
10 | 2
11 | 1
12 | 2
13 | 3
14 | 4
15 | 5
16 | 6
17 | 7
18 | 8
19 | 9
20 | 3
21 | 2
22 | 4
23 | 6
24 | 8
25 | 10
26 | 12
27 | 14
28 | 16
29 | 18
30 | 4
31 | 3
32 | 6
33 | 9
34 | 12
35 | 15
36 | 18
37 | 21
38 | 24
39 | 27
40 | 5
41 | 4
42 | 8
43 | 12
44 | 16
45 | 20
46 | 24
47 | 28
48 | 32
49 | 36
50 | 6
51 | 5
52 | 10
53 | 15
54 | 20
55 | 25
56 | 30
57 | 35
58 | 40
59 | 45
60 | 7
61 | 6
62 | 12
63 | 18
64 | 24
65 | 30
66 | 36
67 | 42
68 | 48
69 | 54
70 | 8
71 | 7
72 | 14
73 | 21
74 | 28
75 | 35
76 | 42
77 | 49
78 | 56
79 | 63
80 | 9
81 | 8
82 | 16
83 | 24
84 | 32
85 | 40
86 | 48
87 | 56
88 | 64
89 | 72
90 | 10
91 | 9
92 | 18
93 | 27
94 | 36
95 | 45
96 | 54
97 | 63
98 | 72
99 | 81
100 | 3
您可以在此处找到扩展到10000的列表。
计分
这是代码高尔夫球,因此以字节为单位的最短有效代码获胜。Tiebreaker提交的提交首先达到其最终字节数。下个星期一,10月19日将选出获胜者。祝您好运!
编辑:恭喜您的获胜者@isaacg,再次使用Pyth获得14个字节!
|*GHhG
保存一个字节?H*GHhG
。