我认为这里的大多数人都知道数字的7段显示是什么:
_ _ _ _ _ _ _ _
| | | _| _| |_| |_ |_ | |_| |_|
|_| | |_ _| | _| |_| | |_| _|
我们可以将两个数字之间的7段差(7SD)定义为需要切换以从一个切换到另一个的段数。例如,介于和之间的7SD 为5(需要切换三个水平段和下面两个垂直段),而介于6和8之间的7SD为1。1
2
此外,我们可以将两个数字之间的7SD定义为其相应数字之间的7SD之和。如果一个数字长于另一个数字,我们假设它们是右对齐的,然后添加显示更大数字的其他最高有效数字所需的段数。例如,考虑介于12345
和之间的7SD 549
:
x: 1 2 3 4 5
y: 5 4 9
7SD: 2+5+2+0+1 = 10
给定n,您的任务是计算介于n和n + 1之间的7SD。
为方便起见,这是各个数字之间的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 0
输入项
- 输入是一个正整数
n
。 - 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数参数获取输入。
- 您可以假定输入最多比语言的标准整数类型可以表示的最大数字小一,只要该类型支持的值至少为127(含)以下即可。
输出量
- 您应该在
n
和之间打印一个整数,即7SDn+1
。 - 您可以通过STDOUT(或最接近的替代品),函数返回值或函数(out)参数输出。
计分
适用标准代码高尔夫球规则,最短代码(以字节为单位)获胜。
测试用例
出于某种晦涩的原因,尽管存在密切相关的序列A123587,但该序列尚未在OEIS中。以下是前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, 4
7SD大于9的第一个输入1999
应产生11。这是其他一些较大的示例:
n 7SD
1999 11
12345 1
999999 14
5699999 15
8765210248 1