首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >新命令#2:转向我的方向

新命令#2:转向我的方向
EN

Code Golf用户
提问于 2019-03-19 16:18:27
回答 8查看 847关注 0票数 15

简介(可忽略)

将所有正数按其正则顺序(1,2,3,.)有点无聊,不是吗?因此,这里有一系列关于所有正数排列(改组)的挑战。这是本系列的第二个挑战。第一个挑战是这里

在这个挑战中,我们使用灰色码来获取自然数。灰色码或“反射二进制码”是一种二进制编码,其方式是两个连续值仅相差一位。这种编码的一个实际应用是在旋转编码器中使用它,因此我参考了“转我的路”

请注意,这种编码留下了一定程度的自由度。例如,在二进制1100之后,有四种可能的代码: 1101、1110、1000和0100。这就是为什么我将a(n)定义为最小的值,而不是以前使用的值,该值仅与二进制编码中的一个字符不同。该序列与A163252相对应。

由于这是一个“纯序列”的挑战,任务是将给定nD9输出为输入,其中a(n)A163252

任务

给定整数输入n,以整数格式输出a(n) (而不是二进制格式)。

a(n)被定义为序列中没有出现的最小正整数,因此当以二进制形式写入时,a(n-1)a(n)仅相差一位。

注意:这里假设基于1的索引;您可以使用基于0的索引,所以a(0) = 1; a(1) = 3__等等。如果您选择使用这个索引,请在您的答案中提到这一点。

测试用例

代码语言:javascript
复制
Input | Output
--------------
1     | 1
5     | 4
20    | 18
50    | 48
123   | 121
1234  | 1333
3000  | 3030
9999  | 9997

规则

  • 输入和输出是整数(您的程序至少应该支持1到32767的输入和输出)
  • 无效输入(0、浮点数、字符串、负值等)可能导致无法预测的输出、错误或(联合国)定义的行为。在A163252中,a(0)被定义为0。对于这一挑战,我们将忽视这一点。
  • 默认应用I/O规则
  • 违约漏洞是禁止的。
  • 这是密码-高尔夫,所以以字节为单位的最短答案获胜。

最后注

请参阅以下与PP&CG相关(但不相等)的问题:

EN

回答 8

Code Golf用户

发布于 2019-03-19 17:35:03

JavaScript (ES6),65字节

1-索引。

代码语言:javascript
复制
n=>{for(o=p=[k=1];o[k]|~-(i=p^k)&i?k++:k=o[p=k]=!!n--;);return p}

在网上试试!

评论

代码语言:javascript
复制
n => {                  // n = index of requested term
  for(                  // for loop:
    o =                 //   o = storage object for the terms of the sequence
    p =                 //   p = last term found in the sequence
      [k = 1];          //   k = current term
    o[k] |              //   if k was already encountered
    ~-(i = p ^ k) & i ? //   or (p XOR k) has more than 1 bit set:
      k++               //     increment k
    :                   //   else:
      k = o[p = k]      //     set o[k], set p to k
        = !!n--;        //     stop if n is equal to 0 or set k to 1; decrement n
  );                    // end of for()
  return p              // return p
}                       // end
票数 4
EN

Code Golf用户

发布于 2019-03-19 20:02:52

Python 2,81字节

基于1的索引

代码语言:javascript
复制
l=[0];p=0
exec"n=0\nwhile(p^n)&(p^n)-1or n in l:n+=1\np=n;l+=p,;"*input()
print p

在网上试试!

Python 2,79字节

这需要很长时间(9999在本地运行7分钟后还没有完成)

代码语言:javascript
复制
l={0};p=0;n=input()
exec'p=min({p^2**k for k in range(n)}-l);l|={p};'*n
print p

在网上试试!

票数 2
EN

Code Golf用户

发布于 2020-10-29 17:31:01

外壳,21字节

代码语言:javascript
复制
!¡λḟ¤ȯεΣz≠ȯ↔Θḋ→¹`-N)ø

如果不适用于类型推断问题,在网上试试! ¡§ḟ¤ȯεΣz≠ȯ↔Θḋ→`-Nø将有效。

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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