我想这里的大多数人都知道数字的7段显示是什么:
_ _ _ _ _ _ _ _
| | | _| _| |_| |_ |_ | |_| |_|
|_| | |_ _| | _| |_| | |_| _|我们可以定义两个数字之间的7段差异(7SD),以表示需要切换以从一个切换到另一个的段数。例如,1和2之间的7SD是5(三个水平段和下两个垂直段需要切换),而在6和8之间的7SD是1。
此外,我们还可以将两个数字之间的7SD定义为其相应数字之间的7SD之和。如果一个数字比另一个长,我们假设它们对齐,并添加显示较大数字的附加最重要数字所需的段数。例如,考虑12345和549之间的7SD:
x: 1 2 3 4 5
y: 5 4 9
7SD: 2+5+2+0+1 = 10您的任务是计算n和n+1之间的7SD,给定n。
为了方便起见,这里是单个数字之间的7SD的完整表。行_表示空位置。
_ 0 1 2 3 4 5 6 7 8 9
_ 0 6 2 5 5 4 5 6 3 7 6
0 6 0 4 3 3 4 3 2 3 1 2
1 2 4 0 5 3 2 5 6 1 5 4
2 5 3 5 0 2 5 4 3 4 2 3
3 5 3 3 2 0 3 2 3 2 2 1
4 4 4 2 5 3 0 3 4 3 3 2
5 5 3 5 4 2 3 0 1 4 2 1
6 6 2 6 3 3 4 1 0 5 1 2
7 3 3 1 4 2 3 4 5 0 4 3
8 7 1 5 2 2 3 2 1 4 0 1
9 6 2 4 3 1 2 1 2 3 1 0n。n和n+1之间的7SD。适用标准密码-高尔夫规则,最短代码(以字节为单位)获胜。
由于一些不清楚的原因,这个序列还没有在OEIS中,尽管有密切相关的序列A123587。以下是前100个数字(以n = 1, 2, 3, ...开头):
5, 2, 3, 3, 1, 5, 4, 1, 4, 4, 5, 2, 3, 3, 1, 5, 4, 1, 7, 4, 5, 2, 3, 3, 1,
5, 4, 1, 4, 4, 5, 2, 3, 3, 1, 5, 4, 1, 5, 4, 5, 2, 3, 3, 1, 5, 4, 1, 5, 4,
5, 2, 3, 3, 1, 5, 4, 1, 3, 4, 5, 2, 3, 3, 1, 5, 4, 1, 7, 4, 5, 2, 3, 3, 1,
5, 4, 1, 6, 4, 5, 2, 3, 3, 1, 5, 4, 1, 3, 4, 5, 2, 3, 3, 1, 5, 4, 1, 6, 47SD大于9的第一个输入是1999,它应该产生11。下面是其他一些更大的例子:
n 7SD
1999 11
12345 1
999999 14
5699999 15
8765210248 1发布于 2016-06-13 02:20:49
因为你知道爪哇。
int f(int n){return n>0?n%10<9?26523308>>n%10*3&7:2+f(n/10):2;}从一开始就看到了
最大值为2147483647,因为这是Java的Integer.MAX_VALUE。
这是我的Python回答的一个端口,是ES6的答案的一个端口。
发布于 2016-06-12 22:29:11
!x=x<1?2:(t=x%10÷1)<9?3045058÷6^t%6:2+!.1x在这里试试。
丹尼斯保存了一个字节!
发布于 2016-06-12 21:59:37
Ώ?H?<γ%Ht9P."452331541"γ+2Ώc/Ht2在这里试试!
这是尼尔回答的一个转变。
Ώ?H?<γ%Ht9P."452331541"γ+2Ώc/Ht2
Ώ define a function Ώ of H
?H 2 (when H is zero, return is 2)
%Ht H mod 10
γ γ = ^
?< 9 is it less than 9?
if so:
."452331541"γ get the γth element of that string
P as a number
else
+2 add two to
Ώ Ώ over
c/Ht int(H / 10)https://codegolf.stackexchange.com/questions/82751
复制相似问题