首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字1至7的总和

数字1至7的总和
EN

Code Golf用户
提问于 2015-10-08 19:53:23
回答 6查看 2K关注 0票数 21

挑战

给定一个28或更高的正整数N,输出一个数字列表,并将其加到N,该列表将每个数字1通过7精确地使用一次。你可以给出一个程序或函数。

这些数字可以单独出现或串连在一起,只要您不重复使用其中的每一个数字。例如,[12, 34, 56, 7]是有效的,[1, 27, 6, 4, 35][1234, 567]也是有效的,但[123, 34567][3, 2, 1476]是无效的。数字被列出的顺序并不重要。

如果不能使用1-7制作N,则返回或不输出任何内容。

其他信息

  • 这是代码高尔夫,所以在10月15日星期四之前,以字节为单位的最短代码获胜。
  • 在评论中提出任何问题。
  • 任何我在挑战中没有具体说明的事情都由你来决定。
  • 标准的漏洞是不允许的。

示例

这些可能会消除任何混乱:

输入

代码语言:javascript
复制
28

输出

代码语言:javascript
复制
[1, 2, 3, 4, 5, 6, 7]

输入

代码语言:javascript
复制
100

输出

代码语言:javascript
复制
[56, 7, 4, 31, 2]

输入

代码语言:javascript
复制
1234567

输出

代码语言:javascript
复制
[1234567]

输入

代码语言:javascript
复制
29

输出

没有,29是无效的。

输入

代码语言:javascript
复制
1891

输出

代码语言:javascript
复制
[1234, 657]

输入

代码语言:javascript
复制
370

输出

代码语言:javascript
复制
[15, 342, 7, 6]

如果需要的话我会做更多的。

下面是是用这七个数字创建的所有可能的数字的巴斯特箱,由FryAmTheEggman提供。

EN

回答 6

Code Golf用户

发布于 2015-10-08 20:42:19

Pyth,23

代码语言:javascript
复制
#iRThfqQsiR10Ts./M.pS7q

天真的蛮力,在网上太慢,在我的电脑上花了大约一分钟。使用常见的“循环直到异常”模式的pyth,其中访问结果过滤的组合列表导致一个错误的不可能的数字,如29

输出就像一个节奏曲列表,例如。

代码语言:javascript
复制
1891
[1234, 657]
100
[1, 2, 34, 56, 7]
370
[12, 345, 6, 7]

这是一个粘贴,所有的10136数字,可以这样做。

票数 4
EN

Code Golf用户

发布于 2015-10-10 09:22:44

Haskell (145个字节)

代码语言:javascript
复制
main=getLine>>=print.head.f[1..7].read
f[]0=[[]]
f b s=[n:j|(n,g)<-m b,j<-f g$s-n]
m b=[(d+10*z,g)|d<-b,(z,g)<-(0,filter(/=d)b):m(filter(/=d)b)]

使用递归。

Ungolfed (337字节):

代码语言:javascript
复制
delete d = filter (/= d)
main = getLine >>= print . (`form` [1..7]) . read

form s [] | s == 0    = [[]]
form s ds | s <= 0    = []
form s ds | otherwise = [n:ns | (n, ds') <- makeNumbers ds, ns <- form (s-n) ds']

makeNumbers [] = []
makeNumbers ds  = [(d + 10 * n',ds') | d <- ds, (n',ds') <- (0,delete d ds):makeNumbers (delete d ds)]
票数 1
EN

Code Golf用户

发布于 2020-11-04 00:07:34

果冻,12字节

代码语言:javascript
复制
ŒṗDẎṢ⁼ʋƇ7R¤Ḣ

在网上试试!

几乎所有输入都超时。如果不存在这样的列表,则输出0。需要空输出将添加3个个字节

是一个14字节(17用于空输出)的答案,它的运行时间或多或少是恒定的(大约40秒)。

他们是如何工作的

代码语言:javascript
复制
ŒṗDẎṢ⁼ʋƇ7R¤Ḣ - Main link. Takes n on the left
Œṗ           - Integer partitions of n
      ʋƇ     - Keep those for which the following is true:
  D          -   Convert to digits
   Ẏ         -   Flatten
    Ṣ        -   Sorted
     ⁼  7R¤  -   Equals [1, 2, 3, 4, 5, 6, 7]
           Ḣ - Take the first list

14字节版本:

代码语言:javascript
复制
7Œ!ŒṖ€ẎḌS=¥Ƈ⁸Ḣ - Main link. Takes n on the left
7              - Yield 7
 Œ!            - Get all permutations of [1, 2, 3, 4, 5, 6, 7]
     €         - Over each:
   ŒṖ          - Yield it's partitions
      Ẏ        - Flatten to a single list of all partitions
       Ḍ       - Convert from digits
          ¥Ƈ   - Keep those for which the following is true:
        S      -   Sum
         =  ⁸  -   Equals n
             Ḣ - Take the first list
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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