首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可容许序列的测试

可容许序列的测试
EN

Code Golf用户
提问于 2016-08-14 08:43:35
回答 4查看 1.6K关注 0票数 13

执行摘要:测试一个整数的输入序列是否“可接受”,这意味着它不包括任何模数的所有剩余类。

什么是“可接受”序列?

给定一个整数m≥2,剩余类模m就是一般差分m的m个可能的算术级数。例如,当≥时,4个剩余类模4是

代码语言:javascript
复制
..., -8, -4, 0, 4, 8, 12, ...
..., -7, -3, 1, 5, 9, 13, ...
..., -6, -2, 2, 6, 10, 14, ...
..., -5, -1, 3, 7, 11, 15, ...

kth残差类由其除以m等于k的所有整数组成(只要对负整数正确定义“余数”)。

一个整数序列a1,a2,.,ak是容许模m,如果它不能相交至少一个剩余类。例如,{0,1,2,3}和{- 4,5,14,23}不是容许模4,但{0,1,2,4}和{0,1,5,9}和{0,1,2,-3}是可容许模4。此外,{0,1,2,3,4}是不可容许的模4,而{0,1,2}是可容许模4。

最后,如果一个整数序列是每一个整数m≥2的可容许模m,则它是简单可接受的。

挑战

编写以整数序列为输入的程序或函数,如果序列是可接受的,则返回(一致) Truthy值;如果序列不可接受,则返回(一致) Falsy值。

整数的输入序列可以是任何合理的格式。您可以假设输入序列至少有两个整数。(如果需要,还可以假设输入整数是不同的,尽管它可能没有帮助。)您必须能够处理正整数和负整数(和0)。

通常的密码-高尔夫评分:最短的答案,以字节为单位,获胜。

样本输入

以下输入序列应分别给出一个真实值:

代码语言:javascript
复制
0 2
-1 1
-100 -200
0 2 6
0 2 6 8
0 2 6 8 12
0 4 6 10 12
-60 0 60 120 180
0 2 6 8 12 26
11 13 17 19 23 29 31
-11 -13 -17 -19 -23 -29 -31

以下输入序列应分别给出一个Falsy值:

代码语言:javascript
复制
0 1
-1 4
-100 -201
0 2 4
0 2 6 10
0 2 6 8 14
7 11 13 17 19 23 29
-60 0 60 120 180 240 300

贴士

  • 请注意,任何3或更少整数的序列都是自动允许模4的。更普遍的是,当m > k时,长度k的序列自动可容许模m。因此,可容许性的测试实际上只需要检查有限的m。
  • 还请注意,2除以4,且任何可容许模2(即所有奇数或所有奇数)都自动可容许模4。更普遍地说,如果m除以n和一个序列是容许模m,则它是自动容许模。因此,为了检查可容许性,只要你愿意,只考虑素m就足够了。
  • 如果a1,a2,…,ak是一个可容许序列,那么a1+c,a2+c,.,ak+c对任意整数c(正或负)也是可容许的。

数学相关性(选读)

设a1,a2,.,ak是整数序列。假设有无穷多个整数,使得n+a1,n+a2,.,n+ak都是素数。那么很容易证明a1,a2,.,ak必须是容许的。实际上,假设a1,a2,…,ak是不可容许的,设m是一个使得a1,a2,…,ak不是容许模m的数,那么无论我们选择哪个n,都必须是m的倍数n+a1,n+a2,…,n+ak,所以不能是素数。

素数k元组猜想是这个命题的逆命题,它在数论中仍然是一个广泛存在的问题:它断言,如果a1,a2,…,ak是一个可容许序列(或k元组),那么应该有无穷多个整数n,使得n+a1,n+a2,…,n+ak都是素数。例如,可容许序列0,2得到的结论是,应该有无穷多个整数n,使得n和n+2都是素数,这是孪生素数猜想(仍未证明)。

EN

回答 4

Code Golf用户

回答已采纳

发布于 2016-08-14 09:13:08

果冻,10字节

代码语言:javascript
复制
JḊðḶḟ%@ð€Ạ

在网上试试!运行所有测试用例.

代码语言:javascript
复制
               Input: L.
JḊ             Range of [2..len(L)].
  ð    ð€      For x in [2..len(L)]:
   Ḷ             [0..x-1] (residue classes)
    ḟ              without elements from
     %@            L % x.
         Ạ     All truthy (non-empty)?
票数 4
EN

Code Golf用户

发布于 2016-08-14 09:37:28

JavaScript (ES6),59字节

代码语言:javascript
复制
a=>a.every((_,i)=>!i++|new Set(a.map(e=>(e%i+i)%i)).size<i)

使用@KarlNapf的残余物诡计。

票数 2
EN

Code Golf用户

发布于 2016-08-14 13:24:42

马蒂尔,11字节

代码语言:javascript
复制
"X@QGy\un>v

Truthy是一个包含所有数组(列向量)的数组。Falsy是一个包含至少一个零的数组。您可以使用此链接检查这些定义。

在网上试试!或验证所有测试用例:特鲁西虚妄 (稍加修改的代码,每个案例产生一个水平向量以提高清晰度)。

解释

代码语言:javascript
复制
"       % Take input array. For each; i.e. repeat n times, where n is arrray size
  X@Q   %   Push iteration index plus 1, say k. So k is 2 in the first iteration,
        %   3 in the second, ... n+1 in the last. Actually we only need 2, ..., n;
        %   but the final n+1 doesn't hurt
  G     %   Push input again
  y     %   Duplicate k onto the top of the stack
  \     %   Modulo. Gives vector of remainders of input when divided by k
  un    %   Number of distinct elements
  >     %   True if that number is smaller than k
  v     %   Vertically concatenate with previous results
        % End for each. Implicitly display 
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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