首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >7-部分差异

7-部分差异
EN

Code Golf用户
提问于 2016-06-12 21:10:50
回答 3查看 2K关注 0票数 26

我想这里的大多数人都知道数字的7段显示是什么:

代码语言:javascript
复制
 _         _   _         _    _    _    _    _ 
| |    |   _|  _|  |_|  |_   |_     |  |_|  |_|
|_|    |  |_   _|    |   _|  |_|    |  |_|   _|

我们可以定义两个数字之间的7段差异(7SD),以表示需要切换以从一个切换到另一个的段数。例如,12之间的7SD是5(三个水平段和下两个垂直段需要切换),而在6和8之间的7SD是1。

此外,我们还可以将两个数字之间的7SD定义为其相应数字之间的7SD之和。如果一个数字比另一个长,我们假设它们对齐,并添加显示较大数字的附加最重要数字所需的段数。例如,考虑12345549之间的7SD:

代码语言:javascript
复制
  x:  1 2 3 4 5
  y:      5 4 9
7SD:  2+5+2+0+1 = 10

您的任务是计算n和n+1之间的7SD,给定n。

为了方便起见,这里是单个数字之间的7SD的完整表。行_表示空位置。

代码语言:javascript
复制
   _ 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并包括127。

输出

  • 您应该打印一个整数,即nn+1之间的7SD。
  • 您可以通过STDOUT (或最近的替代)、函数返回值或函数(out)参数输出。

评分

适用标准密码-高尔夫规则,最短代码(以字节为单位)获胜。

测试用例

由于一些不清楚的原因,这个序列还没有在OEIS中,尽管有密切相关的序列A123587。以下是前100个数字(以n = 1, 2, 3, ...开头):

代码语言:javascript
复制
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。下面是其他一些更大的例子:

代码语言:javascript
复制
n          7SD
1999        11
12345        1
999999      14
5699999     15
8765210248   1
EN

回答 3

Code Golf用户

发布于 2016-06-13 02:20:49

Java,63字节

随着Python再次通过Java,这个世界得到了纠正。

因为你知道爪哇。

代码语言:javascript
复制
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的答案的一个端口。

票数 5
EN

Code Golf用户

发布于 2016-06-12 22:29:11

Julia,44字节

代码语言:javascript
复制
!x=x<1?2:(t=x%10÷1)<9?3045058÷6^t%6:2+!.1x

在这里试试。

丹尼斯保存了一个字节!

票数 3
EN

Code Golf用户

发布于 2016-06-12 21:59:37

Jolf,32字节

代码语言:javascript
复制
Ώ?H?<γ%Ht9P."452331541"γ+2Ώc/Ht2

在这里试试!

解释

这是尼尔回答的一个转变。

代码语言:javascript
复制
Ώ?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)
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/82751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档