多种语言(非恒定)OEIS!


24

免责声明:这在很大程度上受“ Polyglot OEIS!”的启发但是解决了导致关闭的问题(请参见输出部分),并重新发布了该问题以使答案无效。

介绍

我们都知道并喜欢整数序列在线百科全书OEIS)。那么,如果我们制作了有趣序列的离线版本怎么办?好吧,这有点太简单了,不是吗,您将如何使用我们的标准界面选择一个序列!否。我们需要一个更简单的解决方案。多语种!

输入项

您的输入将是一个非负整数n

输出量

您的输出将是

  • nOEIS序列的第-个条目或
  • nOEIS序列的第一项。

您可以根据需要使索引基于1或0。

为了不使该问题重复,禁止使用通用整数打印机 常量序列。这也应该增加提交的难度,并避免“无聊”的解决方案;)

如果存在两个不相等的序列成员,则序列是非恒定的。

嗯,挑战在哪里?

您必须掌握上述功能。也就是说,如果您支持语言A,B和C,则都必须实现不同的OEIS序列。顺序的选择没有限制,只是所有语言都需要不同的顺序。

也就是说,如果您使用语言A运行提供的程序,则应生成序列X,如果您使用语言B运行提供的程序,则应生成序列Y(X!= Y),并且如果您运行提供的程序用语言C生成序列Z(X!= Z && Y!= Z)。

谁赢?

序列/语言对最多的答案胜出。第一个决胜局是代码大小(以字节为单位),越低越好。第二个决胜局是提交时间,越早越好。

还有最后的字词/规则吗?

  • 您必须声明哪种语言将生成哪个序列。
  • 适用标准I / O规则。
  • 如果在两种语言之间使用不同的编码,则两个程序必须使用相同的字节序列。
  • 语言(Python 2/3)修订版确实算作不同的语言。语言的不同实现(例如Browser JS vs Node.js)也算作不同的语言。
  • 有标准漏洞。

4
此帖子是根据此Meta Q&A完成的
SEJPM'17年

不同的语言可以有不同的索引吗?
斯蒂芬

2
@StepHen是的,他们可以。
SEJPM '17年

Answers:


16

3种语言(1个字节)- 句法A001477),MATLA000027),BraingolfA000217

Q

怎么样?

Q 执行以下操作:

  • 在MATL中,它表示+ 1,因此它基本上等于input + 1

  • 在Pyth中,它表示输入,因此仅输出输入。

  • 在Braingolf中,它是三角数的内置函数。

迷你多语

Pyth可以用以下任何一种语言代替: GolfScript Pyke Brachylog Brain-Flak


1
好吧,您肯定为此+1选择了正确的语言:P
HyperNeutrino

1
@HyperNeutrino我只是从那里移植了我的答案,但是那时候我选择了非常好的语言,所以是的:P-谢谢!
Xcoder先生17年

记住,这是语言的数量,而不是代码质量:P
Stephen

@StepHen我认为3是合理的。
Xcoder先生17年

14

10种语言,122字节

#|A=1:0;~@}{\,[.,];oi
#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()#⎚I±N»
# x
#x%:+.

我肯定可以再加一堆。除非另有说明,否则为1索引。

请注意,当我确定较新的更改不会影响较旧的程序时,我可能不是最新的TIO链接-如果需要,您可以对其进行测试,但是每次进行更改时,都会复制10个以上的新TIO链接有点累。我每5个更新左右就会复制一次。

cQuents v0,A000007

相关代码: #|A=1:0;

#|A捕获输入,并在那里提供Python注释。=1表示第一个项1:0其余的则0输出n给定输入的第一项n。cQuents v0具有一个怪异的错误/功能,当;读取意外但有效的标记(例如)时,它将导致解析结束。

在线尝试!

乒乓球,A001478

相关代码: #|A=1:0;~@

通过退出代码输出。0索引。

#跳过下一个字符。=在这里什么都不做。1按下1,然后:打印1到STDOUT。00)什么也没做。;推送输入,~弹出并推送-n-1@终止。退出代码位于堆栈的顶部。

在线尝试!

axo,A001477

相关代码: }{\

0索引。}从STDIN读取并压入一个整数(出于某种原因需要尾随换行符),{打印堆栈的顶部,并\结束程序。我不确定前面的字符是做什么的,但是在这种情况下,没什么重要的。

在线尝试!

脑干A000027

相关代码: ,[.,]

来自esolangs.org的简单猫程序。输出输入。

在线尝试!

> <>,A000030

相关代码:#...;oi

#镜像并环绕到右边,将其定向为read io;,输出输出的第一个字符。0索引。

在线尝试!

红宝石,A023443

相关代码:print (0 and gets.to_i-1...)

0索引。打印输入减号1. 0在Ruby中为true,但在Python中为false。

在线尝试!

Python 3,A000578

相关代码: print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

删除了HyperNeutrino的原始文章,但这是一个非常知名的多语种。quit()结束程序。

在线尝试!

Python 2,A000290

相关代码:

#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

#coding:utf-8是木炭工作所需的。还删除了HyperNeutrino的原始帖子。quit()结束程序。

在线尝试!

木炭,A001489

相关代码: ⎚I±N»

0索引。清除控制台(木炭按原样打印ASCII)并I±N打印输入的负数。»是解析错误并终止程序。

感谢纯ASCII聊天帮助。

在线尝试!

红衣主教,A020725

相关代码:

 x
x%:+.

将1加到输入,并压缩所有其他指针。

在线尝试!


看起来PingPong的退出代码是ToS,它包装在2 ^ 32处,与64位带符号整数一样。
乔纳森·艾伦

@JonathanAllan很好,谢谢。
斯蒂芬,

如果木炭代码已经在程序末尾,您是否真的需要退出并出现解析错误?
MD XF

@MDXF不,我(是)计划在末尾添加更多内容
Stephen

10

5种语言(05AB1E实际上CJamJellyMATL),7个字节

UD>li)+

在线尝试!:

  • 05AB1E:序列 A000027(正整数: a n)= n;从1开始)
  • 实际上:序列 A023443(非负整数,包括1: a n)= n -1;从0开始)
  • Cjam:序列 A020725(正整数,不包括1: a n)= n +1;从1开始)
  • 果冻:序列 A005843(非负偶数: a n)= 2 * n;从0开始)
  • MATL:序列 A000290(正方形: a n)= n 2;从1开始)。产生输出后,错误退出。

7

3种语言:Proton,A000583;Python 3,A000578;Python 2,A000290

质子 49字节

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

在线尝试!

Python 3,49个字节

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

在线尝试!

Python 2,49个字节

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

在线尝试!

说明

Proton没有'''...'''字符串,所以(''',''')变成了('' ',' ''),这在某种程度上不会引起问题。它评估为'',使(''',''')!=','评估为True

Python中确实有这些字符串,所以(''',''')就是','这样(''',''')!=','的计算结果为False

Python 2对整数使用地板除法,因此1/2>0在Python 2中为false,在Python 3中为true。


如果您将Python行转换成1//1;print(int(input())**(2+(1/2>0)+((''',''')!=',')));quit()语言,然后再添加类似JavaScript的语言,则也许可以添加更多的lang
Stephen

@StepHen当然可以,谢谢。一旦添加JavaScript:P
HyperNeutrino

6

5种语言,107字节

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`

Perl:A000035

使用=作为分隔符s///的手段,我们可以很容易地排除我们不想要的代码,并使用)作为分隔符q{}之后手段print荷兰国际集团q在所有其他语言,我们可以只工作在<>直接,无需担心。

s/1...q/i...#/;
print(<>%2)

在线尝试!

红宝石:A001477

在Ruby中,//实际上是/(除以)/.../(正则表达式匹配),因此只要将正则表达式终止并转换为数字,我们就可以安全地对其进行除法。__id__比短.to_s.ord,那么我们只在's中包含我们不需要的其余代码,将其设置q为,gets并将print其与所有其他代码一起使用。

s=1/2;1//2..."/.__id__;'...';q=gets
print(q)

在线尝试!

Python 2:A005843

使用标准技巧将2与3区别开来,并包含我们不想要的内容"""和注释。

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/...`"""
print(q)

在线尝试!

的Python 3:A008585

在线尝试!

JavaScript(ES6浏览器):A000027

对于JS来说非常简单明了,它最终变得更容易而不重用现有的代码print并使用SpiderMonkey,但这也可能实现。

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`


3

6种语言:立方5/6/7/8/9/10,44个 40 32字节

划掉44仍然是常规44;(

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}

打印:

说明:

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}
DDR'DDR                            get top face sum to 2 (all versions)
       $:                          read input and set notepad to it
         _0                        set notepad to input modulo 2
           ?{...........}          if truthy
             R'DDRDD                reset cube
                    B'              set top face to Cubically version number
                      %0            print top face
                         !{....}   if falsy
                           +00      add 2 to notepad twice
                              %     print

在线尝试!(通常为6x6x6)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.