(一定ではない)OEISをポリグロット!


24

免責事項:これは、「Polyglot the OEIS!」から大きな影響を受けています。しかし、閉鎖につながる問題を修正し(出力セクションを参照)、回答を無効にしないように再投稿されました。

前書き

私たちは皆、整数シーケンスのオンライン百科事典OEIS)を知っています。それでは、興味深いシーケンスのオフラインバージョンを作成したらどうでしょうか。まあ、それはちょっと簡単すぎるでしょう、そうではありませんし、標準インターフェイスでどのようにシーケンスを選択しますか?いいえ。これに対する簡単なソリューションが必要です。ポリグロット!

入力

入力は負でない整数になりnます。

出力

あなたの出力は

  • nOEISシーケンスの-番目のエントリOR
  • nOEISシーケンスの最初のエントリ。

インデックスは、必要に応じて1ベースまたは0ベースにすることができます。

この質問を重複させないために、汎用整数プリンター 定数シーケンスは禁止されています。これはまた、提出の難易度を高め、「退屈な」解決策を避けるべきです;)

等しくない2つのシーケンスメンバーが存在する場合、シーケンスは非定数です。

ええと、チャレンジはどこにありますか?

上記の機能をポリグロットする必要があります。つまり、言語A、B、およびCをサポートする場合、すべてが異なるOEISシーケンスを実装する必要があります。シーケンスの選択は、すべての言語で異なるシーケンスが必要な場合を除いて制限されません。

つまり、提供されたプログラムを言語Aで実行する場合、シーケンスXが生成され、提供されたプログラムを言語Bで実行する場合、シーケンスYが生成され(X!= Y)、提供されたプログラムを実行する場合言語Cでは、シーケンスZが生成されます(X!= Z && Y!= Zを使用)。

誰が勝ちますか?

最も多くのシーケンス/言語ペアを持つ答えが勝ちです。最初のタイブレーカーはコードサイズ(バイト単位)で、値が小さいほど優れています。2番目のタイブレーカーは提出時間で、早いほうが優れています。

最後の言葉/ルールはありますか?

  • どの言語がどのシーケンスを生成するかを宣言する必要があります。
  • 標準のI / Oルールが適用されます。
  • 言語間で異なるエンコーディングが使用される場合、両方のプログラムが同じバイトシーケンスを使用する必要があります。
  • 言語(Python 2/3)リビジョン、異なる言語としてカウントされます。言語の異なる実装(ブラウザJSとNode.jsなど)も異なる言語としてカウントされます。
  • 標準の抜け穴が適用されます。

4
この投稿は、このメタQ&Aに従って行われまし
SEJPM

言語ごとに異なるインデックスを作成できますか?
スティーブン

2
@StepHenはい、できます。
SEJPM

回答:


16

3言語(1バイト)-PythA001477)、MATL A000027)、BraingolfA000217

Q

どうやって?

Q 次のことを行います。

  • MATLでは、それは + 1ため、基本的にに評価されinput + 1ます。

  • Pythでは入力を意味するため、入力を出力するだけです。

  • Braingolfでは、三角数の組み込みです。

ミニポリグロット

Pythは、 GolfScript Pyke Brachylog、または Brain-Flakのいずれかの言語に置き換えることができます。


1
さて

1
@HyperNeutrino私はそこから自分の答えを移植しましたが、当時とても良い言語を選んでいたので、ええ:P-ありがとう!
ミスターXcoder

覚えておいてください、これはコードゴルフではなく言語の数です:P-
スティーブン

@StepHen 3は妥当だと思います。
ミスターXcoder

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入力が与えられたth項を出力しますn。cQuents v0には、などの予期しないが有効なトークン;が読み取られると、解析が終了するという奇妙なバグ/機能があります。

オンラインでお試しください!

ピンポンA001478

関連コード: #|A=1:0;~@

終了コードを介した出力。0インデックス付き。

#次の文字をスキップします。=ここでは何もしません。1をプッシュし1、STDOUTに:出力1します。0プッシュし0ます。)何もしません。;入力をプッシュし、~ポップしてプッシュし-n-1ます。@終了します。終了コードはスタックの先頭です。

オンラインでお試しください!

axo、A001477

関連コード: }{\

0インデックス付き。}STDINから整数を読み取ってプッシュし(何らかの理由で末尾の改行が必要)、{スタックの先頭を出力して\、プログラムを終了します。先行する文字が何をするかはわかりませんが、この場合は重要ではありません。

オンラインでお試しください!

brainfuck、A000027

関連コード: ,[.,]

esolangs.orgの簡単な猫プログラム。入力を出力します。

オンラインでお試しください!

> <>、A000030

関連コード:#...;oi

# 右にミラーリングおよびラップし、読み取りを指示します io;ます。これにより、が行われ、入力の最初の文字が出力されます。0インデックス付き。

オンラインでお試しください!

ルビー、A023443

関連コード:print (0 and gets.to_i-1...)

0インデックス付き。入力から1を引いた値を出力します0。Rubyでは真実ですが、Pythonでは偽です。

オンラインでお試しください!

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のみに感謝します。

オンラインでお試しください!

枢機inalA020725

関連コード:

 x
x%:+.

入力に1を追加し、他のすべてのポインターを押しつぶします。

オンラインでお試しください!


PingPongの終了コードはToSのように見えますが、64ビットの符号付き整数で予想されるように2 ^ 32ラップします。
ジョナサンアラン

@JonathanAllanクール、ありがとう。
スティーブン

Charcoalコードがすでにプログラムの最後にある場合、解析エラーで本当に終了する必要がありますか?
MD XF

@MDXFいいえ、私は最後にさらに追加することを計画していました
スティーブン

10

5言語(05AB1EActuallyCJamJellyMATL)、7バイト

UD>li)+

オンラインでお試しください!:

  • 05AB1E:配列 A000027(正の整数:( 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言語:プロトン、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)+((''',''')!=',')))

オンラインでお試しください!

説明

プロトンには'''...'''文字列がないため、に(''',''')なりますが('' ',' '')、何の問題もありません。評価され''(''',''')!=','評価されTrueます。

Pythonはそう、これらの文字列を持っている(''',''')だけである','ので、(''',''')!=','と評価されましたFalse

Python 2は整数にフロア除算を使用するため1/2>0、Python 2ではfalse、Python 3ではtrueです。


あなたは、あなたにPythonのラインを有効にした場合、いくつかのより多くのlangsを追加することができるかもしれない1//1;print(int(input())**(2+(1/2>0)+((''',''')!=',')));quit()し、次にその後のJavaScriptのような言語を追加
スティーブン・

@StepHen確かに、それはうまくいくかもしれません、ありがとう。JavaScriptの追加に
取り掛かった後

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{}後の手段printINGのq他のすべての言語で、私たちは上で動作することができます<>気にせずに、直接。

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

オンラインでお試しください!

ルビー:A001477

Rubyでは、//実際には/(除算)/.../(正規表現一致)であるため、正規表現が終了し、数値に変換される限り、安全に除算できます。__id__より短く、.to_s.ordそして私達はちょうど私たちが望んでいない残りのコード含まれ、'S、セットqgetsして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)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.