汎用整数プリンター


93

少なくとも3つの異なる言語で実行可能なコードを記述します。コードは1、言語番号1、2言語番号2、3言語番号3などで整数を出力する必要があります。

ルール:

  • 出力は整数のみでなければなりませんが、末尾の改行は問題ありません。
  • コードはいかなる種類の入力も受け付けません
  • 同じ言語の異なるメジャーバージョンは一意と見なされます。したがって、コードはPython 2およびPython 3で実行可能ですが、Python 2.5およびPython 2.7は一意とは見なされません。
  • esolang / wiki記事、利用可能なインタープリターおよびドキュメントがあり、このチャレンジで使用する前に少なくとも2人のユーザーがPPCGで使用している場合にのみ、新しい言語を使用できます。また、これらの4つの規則を遵守する必要があります

提出のスコアは、コード内のバイト数を、キューブで実行できる言語の数で割ったものです。したがって、3つの言語で実行可能な54バイトのソリューションのスコアは2です。

54 / 3^3 = 2  

スコアが低いほど優れています。


リーダーボード


6
あなたはその後、あなたのすべてのための無料のソリューションを与えることになる、コード内のマイナーバージョンを取得することができるかもしれない@muddyfish 2.7.1にします2.7.n。(実際には、sweerpotatoはメジャーバージョンでそれを行います。)
マーティンエンダー

14
ここではおそらく言語による最短の解決策は意味をなさないと思います...:P
FryAmTheEggman

3
P:他の人がそれを知るように、私は、問題についての皮肉なコメントを残し理由です午前I、どちら@Mego
FryAmTheEggman

12
得点のバランスが取れていることをお祝いしたいだけです。コードチャレンジが2つの量を1つのスコアに混合すると、バランスはほとんど常にオフになるため、ベストアンサーはスコアの1つを最適化し、もう1つのスコアをまったく考慮する必要がありません。言語の数の立方体の重みはここで完璧でした...別の言語を追加することは常に可能でしたが、利用可能なバイト数でそれを行うことは常に非常に素晴らしい(しかし実行可能な)挑戦でした。:)
マーティンエンダー

20
では、このPPCGチャレンジ私たちは共同でポリグロットを構築してきました。現在、このチャレンジに提出された主要なエントリよりもこのチャレンジのスコアが高くなっていますが、絶えず改善されているグループの努力をコピーするのは理にかなっていないので、ここでコメントに言及を落としています。

回答:


90

30言語、248バイト、248/30 ^ 3 = 0.009185

#|#?15g,@           kkmNmSaIeoe99+{\#/-;n@0ea
#[9!@>.>.eeaww#-1@*"12" L
#{  
###
#`{
25
print(4^2 +7)/2


"""
Jo is here.
$'main'MoO OOM
 7
>Jo, 30
>X Jo
f::=~27
::=]##}#(prin 29)
print (7/6*24)###;alert 2#-[>+<-----]>-.|#(write(if(= 1/5 .2)26 3))"""

編集: Beatnikでの素数テストは不可能な可能性があるため、Beatnikは削除されました。

コードにはタブがあり(Stack Exchangeによってマングルされます)、末尾に改行がありますxxd

00000000: 237c 233f 3135 672c 4020 2020 0920 2020  #|#?15g,@   .   
00000010: 206b 6b6d 4e6d 5361 4965 6f65 3939 2b7b   kkmNmSaIeoe99+{
00000020: 5c23 2f2d 3b6e 4030 6561 0a23 5b39 2140  \#/-;n@0ea.#[9!@
00000030: 3e2e 3e2e 6565 6177 7723 2d31 402a 2231  >.>.eeaww#-1@*"1
00000040: 3222 094c 0a23 7b20 090a 2323 230a 2360  2".L.#{ ..###.#`
00000050: 7b0a 3235 0a70 7269 6e74 2834 5e32 202b  {.25.print(4^2 +
00000060: 3729 2f32 0a0a 0a22 2222 0a4a 6f20 6973  7)/2...""".Jo is
00000070: 2068 6572 652e 0a24 276d 6169 6e27 4d6f   here..$'main'Mo
00000080: 4f20 4f4f 4d0a 2037 0a3e 4a6f 2c20 3330  O OOM. 7.>Jo, 30
00000090: 0a3e 5820 4a6f 0a66 3a3a 3d7e 3237 0a3a  .>X Jo.f::=~27.:
000000a0: 3a3d 5d23 237d 2328 7072 696e 2032 3929  :=]##}#(prin 29)
000000b0: 0a70 7269 6e74 2028 372f 362a 3234 2923  .print (7/6*24)#
000000c0: 2323 3b61 6c65 7274 2032 232d 5b3e 2b3c  ##;alert 2#-[>+<
000000d0: 2d2d 2d2d 2d5d 3e2d 2e7c 2328 7772 6974  -----]>-.|#(writ
000000e0: 6528 6966 283d 2031 2f35 202e 3229 3236  e(if(= 1/5 .2)26
000000f0: 2033 2929 2222 220a                       3))""".

または、この「オンラインで試す」からコードをコピーして貼り付けることもできます。リンク

これはかなりひどいものですが、十分な言語ができたら、バイトカウントはそれ以上問題にならないという考えをやめたかったのです。まだ簡単に追加できる言語はいくつかありますが(たとえば、Objeck)、現在は長すぎて使い物になりません。しかし、私は良い言語を使い果たしているので、今のところここでやめるかもしれません。

すべてのプログラムを実行します</dev/null 2>/dev/null(つまり、空の入力、抑制されたSTDERR)。

説明は非常に長いので、ここにエグゼクティブサマリーがあります。

No.  Lang.              Non-esolang?     2D esolang?      BF/BF-deriv?
--------------------------------------------------------------------------
1    COW                                                       ✓
2    CoffeeScript            ✓
3    Common Lisp             ✓
4    Retina
5    Befunge-93                               ✓
6    Python 2                ✓
7    Rail                                     ✓
8    ETA
9    Prelude
10   Gol><>                                   ✓
11   evil
12   Foo                                                       ✓
13   Ruby                    ✓
14   ><>                                      ✓
15   Brian & Chuck                                             ✓
16   Whitespace
17   3var
18   Axo                                      ✓
19   Labyrinth                                ✓
20   Starry
21   Fission                                  ✓
22   Brainfuck                                                 ✓
23   Julia                   ✓
24   Lily                    ✓
25   GolfScript
26   Chicken Scheme          ✓
27   Thue
28   Perl 6                  ✓
29   Picolisp                ✓
30   TRANSCRIPT

1.

COWは、追加のコマンドを備えたBrainfuck派生物であり、その1つは数値出力です。無効なものはすべて無視されるため、実行されるプログラムは単に

MoO OOM

セルを1に増やしてから、数値として出力します。

2. CoffeeScript(インタープリターを含む)

CoffeeScriptの見方:

# comments
###
multiline comment
###;alert 2# comment

これは単に警告を発します2。

(はい、おそらく別の言語がこのスロットを取った方が良いでしょうが、私はこの時点で入れ替えるのが面倒です:P)

3. Common Lisp | イデオン

Common Lisp(clisp)の見方:

#|
multiline comment
|#(write(if(= 1/5 .2)26 3))"""

1/5は有理数でに等しくない0.2ため、3が出力されます。処理"""は構文エラーです。

printCommon Lispでは、先行する改行と末尾のスペースが出力されるように見えることに注意してください。しかし、幸運なことに、writeCommon LispとChicken Schemeの両方で動作します。

4. 網膜 | オンラインでお試しください!

導入された制限:最初から2行ごとに有効な正規表現である必要があります。

行の各ペアは置換ステージを形成し、最初の行の正規表現の一致のインスタンスを2番目の行に置き換えます。中央にはペアがあります

「」

最初の空の文字列をに置き換えます"""。ペアの一部ではない最後の空の行は、正規表現の一致数をカウントする一致ステージとして扱われます。空の文字列の4つのインスタンスがであり"""、すなわち、1"2"3"4

5. Befunge-93 | 通訳

Befungeは2D言語であり、関連する指示は

# # 15g,@

最初の行では、と525ライン。#、次の命令をスキップし15gた位置に文字を取得する(1, 5)コード(中525ライン)、,文字を出力して@停止します。

6. Python 2 | イデオン

Pythonは見ています:

# comments
25
print(4^2 +7)/2


"""
multiline string
"""

(4^2+7)/2 = (xor(4,2)+7)/2 = (6+7)/2 = 13/2 = 6print編集されます。

7. レール | オンラインでお試しください!

Railは2D言語であり、実行$はmain関数の南東から始まります。したがって、コードの関連部分は

$'main'
 7
  o
   J

oJTRANSCRIPTが使用するラインから来ます。7を出力した後、列車は認識できないJ命令に当たり、プログラムをクラッシュさせます。

8. ETA | オンラインでお試しください!

導入された制限: ETAプログラムの前の文字はにしないでくださいetaoinsh

ETAは文字etaoinshとその大文字バージョンのみを認識します。つまり、コードは

NSaIeoe

n...eベース7のためには、デリミタ内何に基づいて数、プッシュSaIされ624、又は小数で312。o次に、明らかに256を法としてcharとして出力し、char 8(コードポイント56)を与えます。e次に、空のスタックで分割しようとしますが、失敗します。

9. プレリュード | オンラインでお試しください!

導入された制限:()いずれかの列に1つのみ()、一度に列の読み取りに一致し、による無限ループはありません()

これには、PythonインタープリターがNUMERIC_OUTPUT = True設定されている必要があります。

Preludeは、各行が個別に実行される言語です。多くの文字が実行されますが、重要な部分は

9!

2番目の行では、9を出力します。()プレリュードではループを示していますが、#s が顕著であるため(スタックからポップします)、ループがヒットするまでスタックの最上部は常に0であるため、どれもヒットしません。実行されます。()ただし、導入された余分なスペースに関するPreludeのソースコードの制限。

10. ゴル> <> | 通訳

この部分(および> <>)は、Martinの答えのように機能します。関連するコードは

#                                      ;n@0ea

Gol> <>は2D言語であり#、IP を反映し、左方向に移動します。ラップアラウンドし、10、14、0をスタックにプッシュします。@次に、スタックを回転させて、10を先頭にしてn出力し;、プログラムを停止します。

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

この部分もマーティンの答えに似ています。

evilは、小文字以外のすべてを無視します。さらにいくつかの文字を無視すると、関連する部分は

aeeeaeeaww

ここで、a変数をインクリメントしAeビットシャッフルの悪織り関数でありA、そしてw出力A。したがって、を12回出力して、を与え11ます。

しかし、残りの指示、特にw最後の行についてはどうでしょうか?単にコードを台無しにして、それがここで何らかの形で機能したすべてのものでまだ機能することを祈るのが最も簡単であると言ってみましょう...

12. フー | オンラインでお試しください!

Fooは二重引用符の間のすべてを出力するため、関連する部分は

"12"

2行目。ただし、後で二重引用符が必要になるため、Martinの答えに似た方法を使用してFooエラーを排除します#-1@。空のスタックとゼロエラーによる除算に直面して兵士が使用する言語でなぜそれが機能するのかは不明ですが、それが嬉しいです。

13. ルビー | イデオン

Pythonと同様、Rubyは次のことを認識しています。

# comments
25
print(4^2 +7)/2


"""
multiline string
"""

しかし、それは複数行の文字列は、実際には3つの別個の文字列であることは注目に値します("""...""")一緒に連結。印刷行(4^2+7) = xor(4,2)+7 = 6+7 = 13nil、2で除算しようとしてエラーになる前に出力します。

14. > <> | オンラインでお試しください!

この部分はGol> <>部分と同じです@が、14が代わりに上部に表示され、出力されます。

15. ブライアン&チャック | オンラインでお試しください!

Brian&Chuckは、2本のテープを持つBF派生物です。1本のテープの命令ポインターは、もう1本のテープのメモリポインターです。がない場合```、ソースコードの最初の2行がテープの初期化に使用されます。

最初の2行の関連する文字は次のとおりです。

   ?15
#     >.>.

?ブライアンのテープでは、(指されているセル内のチャックに制御を渡すオーバー#)が非ゼロです。次に>.>.、Chuckが実行され、疑問符の後に2つの文字が出力されます。

16. ホワイトスペース | 通訳

STLそれぞれスペース、タブ、ラインフィードを使用して、プログラムの開始は次のとおりです。

SSSTSSSSL
TL
STL
L
L

最初の行は16(+10000基数2)をプッシュし、前の行TLSTはそれを数字として出力します。次の3つの改行はプログラムを停止します。

ただし、このプログラムはインタープリター固有であることに注意してください。ほとんどのインタープリターの残りのコード構文エラーは、上記のリンクのように、より寛容なインタープリターが必要です。

17. 3var | オンラインでお試しください!

最初の行では、多数の命令が実行されますが、関連する命令は次のとおりです。

kkmmao#/

ETAの制限によりk、変数B aをインクリメントするのではなく、デクリメントするために使用します。kkBを-2にデクリメントし、Bをmm2倍にして16にしaます。これはで17に増加します。これはで出力されoます。

#次に、Bを0にリセットするために使用され、0 /による除算を介してプログラムがエラーになります。

18. Axo | オンラインでお試しください!

導入された制限: IPの方向を変更するAxoプログラムの前の指示なし

もう一度、最初の行で多数の命令が実行されますが、関連する命令は次のとおりです。

# # 15 ,@            9 9  + {   \

AxoはBefungeのような2D言語であり、#同様に次の命令をスキップするブリッジですが、スタックのトップがゼロの場合のみです。15,スタックにプッシュしますが、スタックはで空になり@ます。99+次に、18を押して{出力し、\停止します。

19. ラビリンス | オンラインでお試しください!

ラビリンスは別の2D言語であり、実行される命令は

#|#
 [9!@

#スタックの長さをプッシュします。最初は0です。|は、ビット単位のORであり、スタックはこの時点で0を持っているだけなので、何も変更せず、2番目#はゼロの孤立により1をプッシュします。1のため右に曲がり、9この1を1*10+9 = 19に変換し、!印刷して@停止します。

このプログラムは、[現在認識されている命令ではないという事実に依存しているため、壁として扱われます。

20. 星空 | オンラインでお試しください!

導入された制限:すべて+のsには少なくとも1つの先行スペースが必要です

認識されない文字を取り除くと、コードの関連部分は

,       +.. +

,が入力されますが、そこからパイプする/dev/nullので、0をスタックにプッシュします。前のスペースを含むA +n >= 5pushするn-5ため、次の命令は2をプッシュし、..これら2桁を逆の順序で出力します。

次に+、単一の先行スペースがあり、複製されます。ただし、スタックは空なので、エラーが発生します。

21. 核分裂 | オンラインでお試しください!

核分裂に関連する唯一の部分は

*"12"L

L左に移動する原子を生成し、"21"21を出力して*停止します。

22. ブレインファック | オンラインでお試しください!

導入された制限:.最初の前にありません[

これには、EOFに0を与え、8ビットセルを持つインタープリターが必要です。関連するコードは

,+-[>.>.-+.>,>]-[>+<-----]>-..

initalは-オフセットすること+、及び第一の[...]セルが0以下であるので、実行されない-[>+<-----]>-の文字コードにセット細胞2、及び..二回出力します。

23. ジュリア | オンラインでお試しください!

ジュリアは見ています:

# comments
25
print(4^2 +7)/2

印刷されるのは4^2+7 = pow(4,2)+7 = 16+7 = 23であり、プログラムはnothing2で除算しようとしてエラーになります。Juliaは、コードの残りの部分が構文エラーを引き起こすという事実を気にしていないようです。

24. リリー | 通訳

リリーは見ている:

# comment
#[
multiline comment
]## comment
print (7/6*24)# comment

7/6*24 = 1*24 = 24 印刷されます。

25. GolfScript | オンラインでお試しください!

GolfScriptの見方:

# comments
25
print(

GolfScriptはスタックベースであるため、25はスタックにプッシュされ、ポップしてで印刷されprintます。(次に、スタック上の暗黙的な空の文字列をデク​​リメントしようとしますが、失敗するとプログラムがエラーになります。

26. チキンスキーム | イデオン

Chicken Schemeには、#| ... |#Common Lisp と同じ複数行コメント構文があります。ただし、

(write(if(= 1/5 .2)26 3))

1/5フロートであるに等しい0.2ので、26が代わりに出力されます。

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

Thueは、文字列の書き換えに基づく言語です。最初の関連部分は

f::=~27
::=

は、置換を定義し、で置換f -> 27の終了を示し::=ます。次に、ローンfインifがに置き換えられ、27出力されます。

28. Perl 6 | イデオン

Perl 6には新しいコメント構文があります。つまり#`(some bracket)、一致するブラケットまでの複数行コメントです。したがって、Perl 6は以下を認識します。

# comments
#`{
multiline comment
}# comment
print (7/6*24)# comment

を印刷し7/6*24 = 28ます。

29. ピコリスプ | イデオン

Picolispの見方:

# comment
#{
multiline comment
}#(prin 29)

29を出力します。その後の行は構文エラーを引き起こします。

30. 転写 | オンラインでお試しください!

TRANSCRIPTは、テキストアドベンチャーをモデルにしたテーマ別のエソランです。認識されない行は無視されます(これにより、実際のコード命令の中に追加のストーリー/フレーバーテキストを追加できます)。したがって、関連する行は次のとおりです。

Jo is here.
>Jo, 30
>X Jo

最初の行はJo、1文字の名前が失敗したように見えるため、2文字の名前を使用して文字列変数を宣言します。2行目はこの文字列を"30"に設定Xし、3行目の( "examine")によって出力されます。


12
Daaaaaaaaaang ...
AdmBorkBork

9
ここでの質問で、これがゼロ以外の最低スコアになると思います。
モーガンスラップ

これが信じられない。私はa敬の念を抱いています。
ニックハートリー

2
*肯定的、ボーナス付きの短い回答にはいくつかの否定的スコアがあります。
電卓

将来のヒント:preMarkdownスタイルのコードブロックを使用する代わりにタグでコードを囲むと、タブが台無しになりません。
ヤコブ

148

15言語、68 66 65バイト/ 15 ^ 3 = 0.019 ...

Retina Starry Prelude ETA Axo Labyrinth Hexagony Foo Brian&Chuck Gol> <> evil Whitespace Fission > <>および GolfScript

大規模な書き直しの後、私はなんとかさらに4つの言語に適合しました。コードには、空白用のいくつかのタブが含まれています。Stack Exchangeはそれらをスペースに変換するため、\t以下で表しています。

#I5aeeNTH{\?      \t\t + +3;n@"8"ea9
15}7'`--~!@<"31"LSOe.\t
 \teaww`

言語の追加は完了したと思います(ただし、1つだけを追加すると、既に持っているもので数バイト節約できます)。ゴルフができるかしら... 15言語の65バイトは11言語の32バイトからかなり跳ね上がっており、Fooを動作させるために少なくとも1つの役に立たないキャラクターがいます。

網膜プリント 1

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

幸い、最初の行は有効な正規表現です。ただし、その正規表現は明らかに空の入力と一致しないため、最初の段階(最初の2行で構成される)は何もしません。

3行目はそれ自体であるため、Matchステージとして扱われ、デフォルトでは一致の数をカウントします。ただし、`は、Retinaに、その前の部分が構成文字列(そこに指定されたオプションのいずれかを認識しない)およびそれ以降の部分が正規表現であることを伝えるセパレータです。したがって、正規表現は空であり、Retinaは正確に1つの一致を見つけます。

星空のプリント 2

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

Starryは、スペースとを除くすべてを無視します+*,'`.。各コマンドは、それらの文字の最後以降のスペースと組み合わせた文字の1つです。余分なコードをすべて削除しましょう。

       + +'`. `

7個のスペースに続いて+a を押します2。1つのスペースとそれに続く+複製。'条件付きジャンプです。スタックの最上部(真実)(正)をポップします。そのため、対応するラベル(ラベルはで示され`、「対応する」は「同じ数の先行スペース」を意味します)にジャンプし`ます。.その前にスペースを入れずに、スタックの最上部を数字として印刷します。

プレリュードプリント 3

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

これは、数値出力を使用するPythonインタープリターを想定しています。すべてのノーオペレーションを削除しましょう:

# 5        ?         + +3    8   9
15 7  -- !   31

最初の声は多くのこと!を行いますが、結果を印刷する必要がないため、何も重要ではありません。2番目の声は1、a 5、a 、aの順に押し7ます。最後の2つの差を取得して取得し-2、それから減算し1て取得し3ます。!印刷します。3番目の音声にはノーオペレーションしかありません。

ETAプリント 4

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

ETAは、文字以外のすべてを無視しますETAOINSH(いずれにしても)。したがって、ETAから見たコードは次のとおりです。

IaeeNTHneaSOeea

I入力を読み込もうとしますが、読み込めないため、をプッシュし-1ます。a現在の行番号に1を加えた値をプッシュし2ます。edivmodで、これらを0andに置き換えます1(または-1、実際には知りませんが、問題ではありません)。次eは、両方をに置き換え0ます。

興味深い部分です。NTHne7を底とする数値リテラルです。Nおよびeは単なる区切り文字であり、3桁はTHNです。つまり54(where Tはdigit 1His 0およびnis 5)です。もう一度a押し2ます。Sその結果、それを減算52し、O(文字として出力します4)。今e再びdivmodしようとしますが、スタックは2ゼロが含まれているので、プログラムはエラーで終了(しかし、そうしながら、STDOUTを汚染しません)。

Axoプリント 5

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

この言語は、書き直しをほぼ単独で担当していました。}Axoでの入力をブロックするため、最初の行にできませんでした(私が話している内容については、改訂履歴を参照してください)。Axoの場合、コードのこの部分のみが関連します。

#I5aeeNTH{\

幸いなことに、Axoは0スタックの一番下に暗黙のsを持っています。これ#は、スタックの一番上をポップするためです(次の命令をスキップするかどうかを確認するため)。文字はすべてノーオペレーションです。その後5プッシュ5{それを印刷し、\プログラムは終了します。本当に簡単です。

ラビリンスプリント 6

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

右半分には決して到達しないため、コードを少し切り詰めています。またt、の代わりにを使用し\tているため、列が正しく整列します。

#I5aeeNTH{\
15}7'`--~!@
 teaww`

これで、文字、スペース、タブがラビリンスの壁になったため、アクセス可能なコードは実際には次のようになります。

# 5      {\
15}7'`--~!@
      `

命令ポインタは自動的にそのパスをたどります。#メインスタック(0)の深さをプッシュし、15それを15}それを補助スタックに移動し、それ以上使用しません。これにより、スタックの最上部がゼロになり、IPが左に曲がらないようになり5ます。7ゼロに変わり7'何もしません。`単項否定であるので、我々が得ます-7。今-、その下に-7ある暗黙的なものからを引きます。今回は、IPが右に回るので、単項否定であるため、再び取得します。IPは、行き止まりに行き当たります。前と同じことをし、私たちが得ます07`7-7もう一度。スタックのトップがプラスになったため、IPは右に曲がります。再び-与える別のものがあります-7。その後、~ビット単位で与える、ではありません6し、!それを印刷します。スタックが再び空になり、IPが左に曲がらず{、代わりにまっすぐに進んで@プログラムが終了するため、これはそうするのにちょうどよい瞬間です。

六角形のプリント 7

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

展開されたコードは次のようになります。

     # I 5 a e
    e N T H { \
   ? + + 3 ; n @
  " 8 " e a 9 1 5
 } 7 ' - - ~ ! @ <
  " 3 1 " L S O e
   . e a w w . .
    . . . . . .
     . . . . .

通常、それは恐ろしいHexagonyプログラムですが、実際に使用されているキャラクターは多すぎません。実際、それらはラビリンスで使用されるものとほとんど同じであり、私が区別する方法は非常に素晴らしい5と思います6。:)

基本的に、一番上の行は無視できます。#通常は別のIPに切り替えますが、現在のメモリエッジは0なので、そうではありません。文字は固定メモリ値を設定するだけですが、使用するつもりはありません。最初の行の終わりの後、制御フローは中央の行に続きます(から始まり、}右に進みます)。}別のメモリエッジへ移動します。7そのエッジをに設定します7'元の場所に戻ります。は、未-設定の7メモリエッジ(0)から設定したメモリエッジを減算するため、を取得し-7ます。次-も同じことをするので、何もしません。これまでのところ、メモリレイアウトを除き、ラビリンスに非常によく似ています。でも今~は、ビット単位のNOTではなく、Hexagonyの単項否定です。したがって、これはの7代わりになり6ます。!@、ラビリンスのように値を出力し、プログラムを終了します。

フープリント 8

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

プログラミング言語のクイズ以来、私たちが知っているように、コードの大部分がランダムなごちゃ混ぜの文字であっても、Fooでは物事を印刷することは非常に簡単です。"8"whichが印刷されることを除き、どの文字も出力に影響しません8。さて、"31"後でありますが、Fooは最初の行の終わりでエラーで終了します。なぜそれが起こるのか正確にはわかりませんが、3一番上の行にそれ(または他の数字)が必要であり、それは他のどこでも使用されていません。

ブライアン&チャックプリント 9

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

3番目の行(解析されない)を削除して、すべての無関係な文字(つまり、操作なし、または読み取られないセル)をスペースに置き換えて、このことをもう一度行います。

         { ?         + +         9
  }   --   <        .

念のため、各行はBrainfuckに似ており、そのテープは他のプログラムのソースコードです。制御フローは最初の行(ブライアン)から始まります。

{一番左に移動し、テープヘッド(それが既にある場合)、および?手がチャック(第2ライン)にオーバーフロー制御します。そこで、}ゼロセルが見つかるまでテープヘッドを右に移動します。それはプログラムの終了まで起こらないので、テープヘッドはの後に1セル分になり9ます。-そのセルをデクリメントしますが、それは無関係です。<上にテープヘッドを移動9し、.それを印刷します。チャックはプログラムを使い果たし、終了します。

Gol> <>プリント 10

ここでテストしました。

#はミラーであるため、IPはすぐに最初の行の終わりまでスキップします(そして左に行きます)。9無視することができます。a押し込む10e押す14"8"の文字コードを押し8@トップスリースタック要素を回転させる(引き上げる10こと、このような)n印刷10及び;プログラムを終了します。

(バイトを節約した)の@代わりに使用することを提案してくれたSp3000に感謝し!ます。

邪悪なプリント 11

1桁の数字を生成するためにブルートフォースコマンドリストを送信してくれたSp3000に感謝します。

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

evilは小文字以外のすべてを無視するため、コードは次のようになります。

aeeneaeeaww

また、n私たちが気にしないいくつかの状態に影響するので、それも無視しましょう。現在a、レジスタ(で始まる0)をインクリメントeし、特定の方法でビットを並べ替える悪の魔法の「織り」操作です。の文字コードでaeeeaeeaある値49をたまたま生成します1ww2回印刷します。

空白印刷 12

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

さて、ホワイトスペースはスペース、タブ、ラインフィードのみを読み取ることを知っているので、ホワイトスペースで見られるようにコードを書いてみましょうSTL

SSSSSSTTSSLTLST

それは2つのコマンドです:

SSSSSSTTSSL
TLST

最初のものは数を押し込み12ます。具体的にSSは、数値リテラルを開始します。次Sは符号ビット(正)です。それまでのすべてLは、数値のバイナリ表現です。Starryには必要な先行ゼロがたくさんありますが、それらは数に影響しません。次に、TTSSsは12バイナリです。面白い事実:16番目の言語を追加した場合、ここで1バイト節約できますS。Starryはの2進表現で4つを使用できるからです16。しかし、私は...

TLSTちょうど数としてスタックの先頭を表示します。(TLコマンドをI / Oコマンドとしてマークし、ST数字を出力しています。)

核分裂プリント 13

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

核分裂はコードのこの部分のみを見ます:

           <"31"L

L左向きのアトムで制御フローを開始します。"印刷モードを切り替えて、31単に印刷するようにします13。次に、原子がのくさびにキャプチャされ<、プログラムが終了します。

> <>プリント 14

ここでテストしました。

> <>とGol> <>を区別するのは、思ったほど簡単ではありません。なぜなら、Gol> <>は、両方に存在するコマンドと、Gol> <にのみ存在するコマンドに対して、ほとんど常に> <>と同じことを行うからです。 >原因> <>がクラッシュします。しかし、@それは押し下げるように、> <における他の方法ラウンド>を回転7引き上げの代わりに10、その後ザは、14代わりに印刷されます10

GolfScriptプリント 15

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

これは最も簡単です:#最初の行をコメントアウトします。その後、15自分自身をプッシュし}、プログラムの残り全体を無視する「スーパーコメント」です。そのため15、プログラムの最後に印刷されます。


34
これは本当に印象的です!
sweerpotato

1
@YassinHajajありがとう、訂正。
マーティンエンダー

2
いいね 15言語の素晴らしい仕事!
ev3commander

1
@SnoringFrogさて、あなたはそこに行きます。
マーティンエンダー

1
@Eumelありがとう。ただし、報奨金はその説明に記載されている「通常の」言語専用であるため、報奨金はそのような答えに行く必要があります(Sp3000の非常に優れたソリューションのように)。とにかくこれから十分な担当者を得たと思います。;)
マーティン・エンダー

42

Python 1.x、2.xおよび3.x、32バイト/ 3 ^ 3 = 1.1851 ...

import sys
print(sys.version[0])

1Python 1.x、2Python 2.x、および3Python 3.x にあるバージョンの最初の番号を出力します。

Python 9.xを入手するまでに、私のスコアは素晴らしいものになります0.04389

:〜)!


10
チャットから:はい、これは安価で有効です=)これは、メジャーバージョンのみが十分にユニークであると見なされた理由の一部です。Pythonのバージョンの数はわかりませんが、このようなものを使用するとスコアがかなり低くなる可能性があります。 )
Stewie Griffin

6
Python 10.x(存在する場合)1では、文字列「10.whatever」の最初の文字であるため、印刷されませんか?
ev3commander

1
@ ev3commanderただし、この送信はpython10で正しい出力を生成するように指定されていません。
タイゾイド

一定!将来性のあるバージョンに取り組んでいますが、Python 1.xは他のユーザーほど使いやすいものではありません:〜)!
sweerpotato

1
私がする必要があるのは、3つのメジャーバージョンを持つ言語を作成することだけです。これら3つのメジャーバージョンでは、空のファイルを実行すると、メジャーバージョン番号が返されます。結果は0/3 ^ 3 = 0になります。
ブレーデンステファニアック

32

3言語、2バイト/ 27 = 0.074

1P

まあ、それは少なくとも提出の半分を打ちます:P

1. GolfScript

GolfScriptはを無視しP、1だけを出力しますオンラインで試してください

2. パー

Pは2のべき乗なので、1P = 2^1 = 2です。オンラインでお試しください

3. 真剣に

Pインデックスが付けられたn番目の素数を返します。2番目の素数であるため、3を取得します。オンラインでお試しください


ノート

私の最初の目標は、1バイトで有効な答えを見つけることでした。私の最初の試みは\x12Bubblegumgs2で動作することでしたが、この挑戦​​には最低3つの言語が必要です。\x131を出力する言語があれば機能します。

1バイトの回答をあきらめて、2バイトに移動しました。3uは、Japtで1、GolfScriptで3、およびSeriouslyで4を出力する密接な呼び出しですが、ギャップを埋めるために2を出力する言語を見つけるのは困難でした。

これはすべて私に時間がかかりすぎました:/


20

6言語-44バイト/ 6 ^ 3 = 0.204 ...

10バイトを節約してくれたSnoringFrogに感謝します!

で動作します:

  • ベファンジ
  • パイス
  • ブレインファック
  • 六角形
  • 空白
  • AniRad v0.2

2# "1",@"-[----->+<]>.*@@@!4<SSTST
T
ST
 >6=

注:オンラインで試す前に、必ずSをスペースに、Tをタブに置き換えるか、次のhexdumpをASCIIに変換してください。

32 23 20 22 31 22 2c 40 22 2d 5b 2d 2d 2d 2d 2d 3e 2b 3c 5d 3e 2e 2a 40 40 40 21 34 3c 20 20 09 20 09 0d 0a 09 0d 0a 20 09 0d 0a 20 3e 36 3d

私はより多くのプログラミング言語を使用しようとします:)

Befunge(印刷物1):

オンラインで試す

2# "1",@"-[----->+<]>.*@@@!4<
2                             # This puts 2 onto the stack
 #                            # Skips the next op (the space)
   "1"                        # Sets the ASCII value of 1 onto the stack
      ,                       # Pop the last item (1)
       @                      # Terminate program

Pyth(印刷物2):

オンラインで試す

2# "1",@"-[----->+<]>.*@@@!4<
2                             # Prints 2
 #                            # Infinite while loop until an error occurs
   "1"                        # String
      ,@                      # This gives the error and terminates the program

Brainfuck(プリント3):

オンラインで試す

2# "1",@"-[----->+<]>.*@@@!4<
2# "1",@"                     # Since these are not brainfuck ops, these will be ignored
         -[----->+<]>         # Puts "3" on the stack
                     .        # Prints the last item (3)     

六角形(プリント4):

オンラインで試す

2# "1",@"-[----->+<]>.*@@@!4<   

より読みやすいバージョン:

   2 # " 1       # The steps:
  " , @ " -      # 1 (2) - Hexagony starts at the top-left of the hexagon
 [ - - - - -     #       - This immediately puts 2 onto the stack
> + < ] > . *    # 2 (#) - Since the stack is 2, this makes the 2nd pointer the 
 @ @ @ ! 4 <     #       - new current pointer
  > 6 = . .      # 3 (*) - The position of the 2nd pointer is in the left-most
   . . . .       #       - position. This sets the stack to the product
                         - of the two neighbours which is zero
                 # 4 (<) - Changes the pointer direction to west
                 # 5 (4) - Sets the stack to 4
                 # 6 (!) - Outputs the decimal 4
                 # 7 (@) - Terminates the program

空白(印刷5):

オンラインで試す

他の文字は無視されますが、空白とタブがあるため、次のようになります。

SSTST                 # This pushes 5 onto the stack
T                     # 
ST                    # This prints the decimal

AniRadバージョン0.2(印刷物6):

どういうわけか、これはバージョン0.2では機能しますが、バージョン0.4ではエラーになります。理由はわかりません。バージョン0.2はこちらにあります。これを実行するには、インタープリターのコードをコピーして貼り付けてrepl.itに実行します。その後、プログラムをSTDINに貼り付けて実行するだけです。

2# "1",@"-[----->+<]>.*@@@!4<      # (#)  Starts at the hashtag (starting point)
                                   #      Direction is down
                                   # (>)  When the pointer gets to the '>', it changes
 >6=                               #      its direction
                                   # (6) Puts 6 onto the stack 
                                   # (=) Pushes the result and terminates

1
言語を増やすことは間違いなく私が思う...三次分母は本当に寛大なので、5つか6つの言語ができたら私のスコアを打つのはそれほど難しくないはずです。
マーティンエンダー

@MartinBüttner、はい、私は新しい言語を追加する方法を見ることができないが
アドナン・

2
@マーティンはい、それは寛大です。三次分母のポイントは、より多くの言語を強く奨励することでした。50バイトの6言語は、30バイトの5言語と同じ価値があると思います。:-)使用する言語が増えると、間違いなく難しくなります。
スティーヴィーグリフィン

空白コードを少し減らすことができます(そして、他の言語には影響しないと思います(改行にLを使用する)。SSSSSSSSSSTTSTSTLTLSSあなたが今持っているのではなく、あなたはそうすることができますSSSTSTLTLST。スタックし、整数として出力します
SnoringFrog

@SnoringFrogありがとう!編集しました
アドナン

14

6つの 7言語、32 37バイト、スコア0.148 ... 7分の37 3 ≈0.107872 ...

#7+!"@\"6.@;n5
print(4--int(-3/2)#"
)

Brainfuck-ng

+現在のセルをインクリメントし!、整数として出力して@終了します。#そして"NOPです。

Python 2

最初の行はコメントです。整数除算を使用して4 - -int(-3 / 2) = 4 - -int(-2) = 4 - -(-2) = 4 - 2 = 2、結果を計算して出力します。

Python 3

前と同じですが、フロート除算を使用します。4 - -int(-3 / 2) = 4 - -int(-1.5) = 4 - -(-1) = 4 - 1 = 3

ルア

--はコメントを開始#し、最初の行はコメントなので、基本的にはprint(4)です。

> <>

#IPを反映し、55を押しnて数字を出力し、;終了します。

ベファンジ

#をスキップして+!論理的にスタックの先頭を否定し"@\"、文字列@\6プッシュし、6をプッシュして.、数値を出力して@終了します。

パイス

#無限ループを開始し、エラーを無視します。77を出力し、+!"string")基本的に2つのオペランドがないためにエラーが発生し+、プログラムが終了します。


13

JavaC ++ C、363/27 = 13.4 ....

Javaは1、C ++は2、Cは3を印刷します。ここでは記録を破ることはありません(Javaのため)。

//\u000a/*
#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
//*/
/*\u002a/
import static java.lang.System.out;
public class P{//*/
/*\u002a/public static void//*/
main(/*\u002a/String[] args//*/
){//\u000a/*
out.print=p;
//\u002a/
out.print(1);}
/*\u002a/}//*/

これは混乱です。これがどのように機能するかの内訳です。Unicodeリテラル(\u000a、別名ラインフィード、および\u002a別名別名*)は、Javaコンパイラーによって実際の文字に展開されます。そのため、Javaコンパイラが見るものは次のとおりです。

//
/*
#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
//*/
/**/
import static java.lang.System.out;
public class P{//*/
/**/public static void//*/
main(/**/String[] args//*/
){//
/*
out.print=p;
//*/
out.print(1);}
/**/}//*/

先頭にあるものはすべて、複数行のコメント(/* ... */)で囲まれているため無視されます。後で、単一行と複数行のコメントを混在させることで、各言語でコメントアウトする部分を正確に制御できることがわかります。mainメソッドでは、複数行のコメントを開始してからを取得します//*/。通常、これは単一行のコメントになりますが、複数行のコメントになっ//ているため、何も実行せず、*/閉じることができます。

これは、コメントが削除された同等のJavaコードです。

import static java.lang.System.out;
public class P{
public static void
main(String[] args
){
out.print(1);}
}

C / C ++コンパイラが見るものを以下に示します(Unicodeリテラルはコンパイラによって展開されず、したがって何もしないため、Unicodeリテラルは削除しました)。

///*
#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
//*/
/*/
import static java.lang.System.out;
public class P{//*/
/*/public static void//*/
main(/*/String[] args//*/
){//\/*
out.print=p;
///
out.print(1);}
/*/}//*/

ここでは、単一行のコメントが最初の複数行のコメント区切り文字をオーバーライドするため、すべての#definesと#includegetが前処理されます。次に、複数行コメントを使用して、Java用のボイラープレートコードをコメント化します。これは、コメントが削除された同等のコードです。

#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
main(
){
out.print=p;
out.print(1);}

標準のC / C ++ポリグロットトリック(#ifdef __cplusplus)を使用して、コードをコンパイルしているC ++またはCコンパイラであるかどうかに応じて、トークンo"2"またはとして定義します"3"。次に、新しく定義されたトークンを使用してp、単一の(無視される)int引数を取り、を呼び出す関数をprintf定義しoます。通常どおり、厳密なモードではないため、戻り値は省略されます。次に、struct単一のメンバーp、およびに一致するシグネチャを持つ関数ポインターを使用してを定義し、という名前の単一のインスタンスを作成しますout。mainメソッドでは(int通常どおり)のアドレスpが割り当てられout.print(そのため、out.printcallsを呼び出しますp)、呼び出されます。

C ++が言語に含まれていなかった場合、すべてのプリプロセッサコードを削除し、pとして定義できますint p(int a){puts("2");}。残念ながら、C ++では#includeI / Oを実行する必要があります。Cが含まれていなかった場合はp#ifdefプリプロセッサマクロの定義を削除しstruct、関数ポインターを必要とせずに直接メンバー関数を定義できます。残念ながら、Cはメンバー関数をサポートしていません。


12

4言語、28バイト/ 64 = 0.4375

print((0 and 3^1or 1/2>0)+1)

1. Python 2

0虚偽で/整数除算なので、

(0 and 3^1 or 1/2 > 0) + 1 = (1/2 > 0) + 1 = (0 > 0) + 1 = False + 1 = 1

2. Perl(Python 3も)

0虚偽で/あり、フロート除算であるため、

(0 and 3^1 or 1/2 > 0) + 1 = (1/2 > 0) + 1 = (0.5 > 0) + 1 = 1 + 1 = 2

3.ルビー

0真実で^あり、ビット単位のXORなので、

(0 and 3^1 or 1/2 > 0) + 1 = xor(3,1) + 1 = 2 + 1 = 3

4.ルア

0真実で^あり、べき乗なので、

(0 and 3^1 or 1/2 > 0) + 1 = pow(3,1) + 1 = 3 + 1 = 4

LuaとRubyはブール値を整数であるかのように追加できないため、それらをグループ化することに注意してください。残念ながら0andLuaでは機能しないため、そこにバイトを保存することはできません。


1(Lua)、2(Ruby)、3(Python / Perl)を出力する以前の17バイトバージョン:

print(2^(0 or 1))

このバージョンの@xnorのおかげで-3バイト、すっきりしている:)


だろう2^(0 or 1)動作しますか?
xnor

@xnorああ、そうです、ありがとう:)
Sp3000

8

BFSRS> <> funge93thon123、73 / 343≈0.212827 ...

Brainfuck、真剣に、> <>、Befunge-93、Python 1、Python 2、Python 3

# 4['.]@kX21z-[>+<-----]>--.<;n3
import sys;print(3+int(sys.version[0]))

印刷不可能なhexdumpを含む(でリバーシブルxxd -ps -r):

2320345b272e5d406b5832317a7f2d5b3e2b3c2d2d2d2d2d5d3e2d2d2e3c
3b6e330a696d706f7274207379733b7072696e7428332b696e7428737973
2e76657273696f6e5b305d2929

今後、さらに言語(およびおそらくバイト)を追加していきます。ヘッダー内の言語は、印刷される順にリストされています。Brainfuckの初期位置(ラッピングまたは無限)から離れることについて文句を言わない8ビットのラッピングセルとテープを想定しています。

Brainfuck:

[.]   initial value of first cell is 0, so loop is skipped
-[>+<-----]>--  push 49 (ASCII ordinal of 1)
.     print "1"
<     move to blank cell
[0]   skip loop because cell is 0
      everything else is ignored

真剣に

# 4['.]@  does some stuff we don't care about
kX        pop entire stack, push as list, discard (essentially the same as é, but is ASCII so we can use Python)
2         push 2
1z        pop 1 item from stack and print (used instead of . so Brainfuck doesn't print here; same as ü in this scenario, but is ASCII so we can use Python)
0x7f      terminate program
          everything else is ignored

><>

#    mirror, reverse direction
3n;  push 3, print "3", end (reversed because IP is scanning RTL at this point)
     everything else is ignored

Befunge-93:

#     jump over the space
4['.] push 4, print 4 (brackets and ' do nothing)
@     end program
      everything else is ignored

Python 1(muddyfishに感謝):

# 4['.]@kX21z-[>+<-----]>--.<;n3         comment; ignored
import sys;print(4+int(sys.version[0]))  prints 4+1=5

Python 2

# 4['.]@kX21z-[>+<-----]>--.<;n3         comment; ignored
import sys;print(4+int(sys.version[0]))  prints 4+2=6

Python 3

# 4['.]@kX21z-[>+<-----]>--.<;n3         comment; ignored
import sys;print(4+int(sys.version[0]))  prints 4+3=7

Python 1も動作します。codegolf.stackexchange.com/a/65652/32686を参照してください。文字を追加しません(ただし、に変更3します4

8

14言語、73バイト、スコア=(73/14 ^ 3)= 0.02660349854

#Y2(3`5n~thneo e        ;n@0d c
#   -[>+<"9"L-----]>+.
14  
print(int(15/2))+3

いくつかの言語を追加できますが、ここにあるものを追加すると思います。

1. Brainbool ; オンラインでお試しください!

関連するコード:

    [>+<         ]>+.

               + 

これは本当に+.+1を出力するだけです。

2. ジョルフここで試してみてください!

(relaventコードがあるので、チャーは、ソースコードを解釈停止します。

#Y2

これは(JavaScriptの)と同等です

var Y = []; toHex(Y); alert(2);

どの出力2。

3.要素; オンラインでお試しください!

関連するコード:

    3`

これはそれをキャプチャ3して印刷します。

4. Brainfuck ; オンラインでお試しください!

関連するコードは次のとおりです。

-[>+<    -----]>+.

  -    -      + 

これは、4のcharコードを生成して出力する標準的な方法です。

5.レン; ここで試してみてください!

~ プログラムを終了するため、関連するコードは次のとおりです。

#Y2(3`5n~

#Yこの場合、TOSに再定義します022を押します。(スタックをN回回転させ、スタックからNをポップします。3`-3を押します。そして最後に、5n印刷し5ます。

6. ETA; オンラインでお試しください!

ETAは文字E、T、A、O、I、N、S、Hのみを読み取るため、実行されるコードは次のとおりです。

       n thneo e         n     


  int int          

超関連コード:

       n thneo

または、同等:nthne on...e7を底とするリテラルでありthn、54の7を底とする数字ですo。この文字を出力します。提出はエラーになりますが、理由はわかりません。

7. Python 3

見えるもの:

# comment
# comment
14
print(int(15/2))+3

15/2/フロート除算と同様に、7.5を生成します。int(...)数値をintにしてから印刷します。プログラムは、発生するとエラーになり+3ます。

8.ジュリア

ジュリアは見ています:

# comment
# comment
14
print(int(15/2))+3

15/2を切り捨てる代わりに、ジュリアはそれを切り上げて8を生成します。

9.核分裂; オンラインでお試しください!

関連コード:

        <"9"L         

このアイデアは、MartinのFissionの部分(盗んだようなもの)から得たものです。L左向きのものを開始し、キャプチャし9、で終了し<ます。

10.空白; ここで試してみてください!

スペースをSタブに変換する関連コードT

SSSTSTS
T
ST

10をスタックにプッシュし、数値(T\nST)として出力します。

11. Python 2

Python 2はこれを見ます:

# comment
# comment
14
print(int(15/2))+3

(int(15/2))+3 11と評価され、印刷されます。

12. Gol> <>; ここで試してみてください!

関連コード:

#                      ;n@0d c

これは、マーティンの答えで使用されたトリックを使用して@、> <>とGol> <>の異なる方向を回転させます。#ミラーは、c12を押し、d13を押し、00を押し、そして@もたらすcスタックの頂部に、次いでouttedと印刷されます;n

13.> <>; オンラインでお試しください!

関連コード:

#                      ;n@0d c

繰り返しますが、これを使用@すると、> <>とGol> <>の異なる方向が回転します。#ミラーは、c12を押し、d13を押し、00を押し、そして@もたらすdスタックの頂部に、次いでouttedと印刷されます;n

14. Golfscript; オンラインでお試しください!

見えるもの:

# comment
# comment
    14
print(-int(-15/2))+3

プッシュ14printエラー、エラー。Sp3000の答えに触発されて盗まれた。


7

サブスキンブレインファックフォブ 27バイト/ 3 ^ 3 = 1

0#>&$3#<>$-[----->+<]>-.
31

サブスキン

0
31

命令ポインタ(ここでは関係ありません)を設定0し、出力レジスタをに設定し31ます。出力レジスタの内容がの場合、>= 0含まれている値をとして出力しますchar。他のすべてのコードは無視されます。

ブレインファック

-[----->+<]>-.

置き3、レジスタ内で一度値をデクリメント-し、最終的にして出力.

フォブ

#>&$3#<>$

Brainfuckも読み込むので、これは、もう少しトリッキーです<>フォブの指示に。実行モードに入り#、Brainfuckのポインターを1つ増やします。これにより、後で簡単になります。まだ何も実行されていないため、何も実行されません。

でアキュムレータモードに入り、$aをスローし、3再度実行モードに入り、アキュムレータの内容をスタックにプッシュし<、最後にコンテンツをで出力し>ます。

Brainfuckがプログラムに干渉しないようにするには、で再び蓄積モードに入ります$


7

7言語、55/7 ^ 3≈0.16035

PowerShell v1、v2、v3、v4、およびv5、Foo、およびPythで実行

#7.q"6""
$p=$PSVersionTable;($p.PSVersion.Major,1)[!$p]

数字1〜5は、sweerpotatoの回答と同様のロジックを使用しています$PSVersionTable特殊変数は、など、PowerShellのV2に導入され、完全なビルドの一覧が含まれ、改正されたここで変数の出力例です:

PS C:\Tools\Scripts> $PSVersionTable

Name                           Value                                                                                                                           
----                           -----                               
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.34209
BuildVersion                   6.3.9600.17400
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2

このコードでは、最初$pにコードの長さが短くなるように保存します。次に、変数を2項目配列のインデックスとして利用して、その存在を確認します。

  • 変数が存在しない場合、PowerShellは、動的に作成して割り当てる$NULL!となっている$TRUE、又は1出力アレイの2番目の要素に相当します1
  • 変数が存在する場合(v2 +の場合)、!変数のの結果は$FALSEまたは0になり、バージョン番号を出力する最初の要素にインデックスが付けられます。

Foo for 6を使用して#、PowerShellのコメントを活用しているため、PS環境で実行する場合は無視されます。ただし、Fooは喜んで番号6を吐き出し、プログラムの残りの部分を続行しますが、何も実行されません。

Pyth for 7を使用して、を返し7、すぐにで終了します.q。そのため、で始まった無限のwhile-trueループ#は関係ありません。暗黙的に印刷されるものが残っているので。この追加について@ FryAmTheEggmanに感謝します。

編集- Golfedバイトのおかげで一握りMauris 編集-にPythの説明のおかげで明らかにしSP3000を


どう$p=$PSVersionTable;($p.PSVersion.Major,1)[!$p]?それは私のPowershellで動作しますが、おそらくすべての以前のバージョンでは動作しません。
リン

7

7言語、287/7 ^ 3 = 0.836

おそらく入る最低スコア、とにかく私はこの3バージョンのCポリグロットが好きです。

少なくとも「3つのユニークな」言語の恩恵を受けるために、退屈なPythonソリューションを追加しました。

異なるコメント解釈のためにCトライグラフを乱用することによりJavaを追加しました。

で動作します:

  • Python 1

  • Python 2

  • Python 3

  • C89

  • C99

  • C ++

  • Java

ゴルフバージョン:

/*
*??/
/
#include <stdio.h>
#ifndef __cplusplus
#define true 8/*
import sys
print(sys.version[0])
'''
#*??/
/
#endif
int main(){int a=(true>1)?-6:3;printf("%d",(true//*
+a
//**??/
/+2));}
#define a \
'''
/**\u002f
public class p{public static void main(){System.out.println("7");}}
/**/

ゴルフをしていない:

/*
*??/
/

#include <stdio.h>

#ifndef __cplusplus
#define true 8/*

import sys
print(sys.version[0])
'''
#*??/
/
#endif 

int main()
{
    int a = (true > 1) ? -6 : 3;
    printf ("%d", (true//*
    +a
    //**??/
/
    +2));
}
#define a \
'''

/**\u002f
public class p
{
    public static void main()
    {
        System.out.println("7");
    }
}
/**/

おそらくこれはちょっとおかしくなってきたので、私の英語スキルがそれを普通に説明するのに十分であると思います。

まず、言語構造をカプセル化するために使用したさまざまな種類のコメントについて説明します。

最初のブロックを見てみましょう:

/*
*??/
/

Javaの場合、これは複数行コメントの始まりにすぎません。しかし... C99 / 89 / ++では、これは次のように評価されます。

/*
*/

以来??/のためのトライグラフである\Cにいる間は\文字が一種の一貫性があり、さらにはそのcommandfunctionalityに改行を消費します。これにより、aの結果は、\n改行を無視するのではなく、単に「表示」されます。つまり、最初のブロックを表す次のバイト配列が与えられた場合、[ /] [ *] [ \n] [ *] [ ?] [ ?] [ /] [ \n] [ /]は3文字表記評価の後になります。[ /] [ *] [ \n] [ *] [ \] [ \n] [ /] [ ] \トリガーの一貫した機能が「消費」する場合\n、C言語で評価された残りのバイトと最終バイトは次のようになります。[ /] [ *] [ \n] [ *] [ /]

しかし、このすべてについて、Javaは何も知らず、このトリックが元に戻されるまで、後続のすべてをコメントとして扱います。

(つづく!)


7

4言語(Befunge-93、Microscript II、Microscript、およびFoo)、スコア7/64 = 0.109

"4"1.@2

Befunge:4を押し、1を押し、1を印刷して終了します。

Microscript II:文字列「4」を生成し、それを破棄し、1の平方根を取得し、それを破棄し、最後にxを2に設定します。これは暗黙的に印刷されます。

マイクロスクリプト:52をスタックにプッシュし(プログラムの残りの部分で実際に使用されることは決してありません)、レジスタを1つ増やし(最初はゼロ)、次にレジスタを2つ増やします。これは暗黙的に印刷されます。

Foo:文字列「4」を印刷してから2を押します


6

Python 1 | 2 | 3、27バイト/ 27 = 1

print(len("\xabc")+(1/2>0))

@sweerpotatoのバージョン番号の使用により、Pythonをより少なく区別できるかどうか疑問に思いました。これが私が見つけた最高のものです。

説明

Python 3と以前のバージョンを区別するために、標準の整数除算と浮動小数点除算のトリックを使用します。(1/2>0) == (0>0)Python 2.3 Falseより前またはPython 2.3以降で0 を(1/2>0) == (0.5>0)返しTrue、Python 3で戻ります。

Python 1と他のPython 1を区別するために、文字列の長さを取得します"\xabc"。これは、Python 1では長さ1、Python 2以降では長さ2です。どうして?なぜなら

文字列リテラルの\ xエスケープは、正確に2桁の16進数を取ります。以前は、「x」に続くすべての16進数を消費し、結果の最下位8ビットを取得するため、\ x123456は\ x56と同等でした。

Python 2.0の新機能から)


6

Python 3、Ruby、Perl、C、C ++、Objective-C 202バイト/ 6 ^ 3 = 0.935 ...

これは実際には非常に面白く、ブール値で遊んでいた。

コードをコピーしてインタープリターに貼り付けることにより、次のサイトですべてのバージョンのコードを作成できます。

#include <stdio.h> /*
print ((("0"+"0"==0)and 3) or (0and 2or 1));
__DATA__ = 1
"""""
*/
int main(){putchar(
#ifdef __OBJC__
'6'
#else
#ifdef __cplusplus
'5'
#else
'4'
#endif
#endif
);return 0;}/*
"""
#*/

Python 3、プリント 1

その秘Theは次のとおりです。

print ((("0"+"0"==0)and 3) or (0and 2or 1));

これは印刷されます 1

ルビー、プリント 2

Ruby用に解釈されるコードは次のとおりです。

print ((("0"+"0"==0)and 3) or (0and 2or 1));

これが印刷されます 2

Perl、印刷 3

Perl用に解釈されるコードは次のとおりです。

print ((("0"+"0"==0)and 3) or (0and 2or 1));
__DATA__ = 1

まず、__DATA__トークンはPerlコンパイラにコンパイルが終了したことを伝えます。以降はすべて無視されます。

print ((("0"+"0"==0)and 3) or (0and 2or 1));

そして印刷 3

C、プリント 4

解釈されるコードは他のものとはまったく異なります。

#include <stdio.h>
int main(){putchar(
#ifdef __OBJC__
'6'
#else
#ifdef __cplusplus
'5'
#else
'4'
#endif
#endif
);return 0;}

これは単にcharを出力し4ます。

C ++、印刷 5

Cコードと同じ

これによりcharが出力され5ます。

Objective-C、プリント 6

Cコードと同じ

これによりcharが出力され6ます。


5

5言語、18バイト/ 5 ^ 3 = 0.144

で実行しますBrainboolMathematicaのフー>、<>Befunge-93

4!<n;+Print@2"3".5

脳みそ

BrainboolはBrainfuck似ているが、それはビットのみで動作し、その入力と出力が単独からなる01

4!<n;+Print@2"3".5
  <                   move the pointer to the left
     +                logic not
                .     print the current cell

Mathematica

Mathematicaでは、すべてが式であり、値を持ちます。シンボルをPrint@2出力2して返しますNull。その後、コードはいくつかの記号計算を行いますが、何も出力しません。

フー

"3" 3.他の部分が何をするのかわかりません。

> <>

4!<n;+Print@2"3".5
4                     push 4
 !                    skip the next command
   n                  pop and print it as a number
    ;                 end the program

ベファンジ

4!<n;+Print@2"3".5
4                     push 4
 !                    logical not
  <                   makes the program counter travel to the right
 !                    logical not
4                     push 4
                 5    push 5
                .     pop and print it as a number
             "3"      push the string "3"
            2         push 2
           @          end the program

12言語、35バイト/ 12 ^ 3 = 0.0202546 ...

sweerpotatoのトリックを使用して、安価ですが強力です。

で実行BrainboolMathematicaの2.0、3.0、4.0、5.0、6.0、7.0、8.0、9.0及び10.0フー> <>

cn;+"11".Print@Floor@$VersionNumber


5

6言語、38/6 ^ 3 =0.17592̅5̅9̅

ホワイトスペース、ブレインファック、ルビー、ラビリンス、フー、マジ

伝説:

£: タブ

: スペース

§:0x7f

puts•2;#4!@•-[>+<-----]>6.§"5"•£    
£
•£

これには印刷できない文字が含まれているため、hexdumpを次に示します。

7075747320323b23342140202d5b3e2b3c2d2d2d2d2d5d3e362e7f22352220090a090a20090a

説明:

空白

オンラインでお試しください。(注:私のプログラムは、プログラムを終了するために閉じている3つの改行を省略し、Whitelipsでこれを記述 /テストし、そこに適切な出力を生成しますが、Try It Onlineでは生成しないため、リンクされたプログラムにはこれら2つの文字が追加されます。私が言うことができるように、一部のインタープリターはあなたにそれをさせます、他のものは明示的な終了なしで無限ループで立ち往生します)

(無視された文字を省略する)

spacespacespacetabenter:1をスタックにプッシュします

tabenterspacetab:スタックのトップを出力します

ルビー

説明する必要はありません。2を出力し、その行の残り(ergo、brainfuckプログラム)をコメントとして扱い、ファイルの残りを空として扱います。

ブレインファック

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

アンダーフローをサポートするインタープリターが必要です。最初のセルを255にアンダーフローしてから、ループカウンターに使用して51を生成します。これは3のASCIIコードです。

ラビリンス

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

(最後の2行は到達できないため読みやすさのために省略しています)

puts•2;#4!@ -[>+<-----]>6.§"5"•£
puts•                            skipped
     2                           push 2 onto stack
      ;                          pop 2 from stack
       #                         push current stack depth (0) to stack
        4                        push 4 to stack
         !                       print top of stack as integer
          @                      program terminates

フー

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

出力に影響するのは「5」のみで、5が出力されます。

真剣に

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

puts•2;#4!@ -[>+<-----]>6.§"5"•£
puts•2;#4!@ -[>+<-----]>           assorted stack manipulation that doesn't affect this program
                        6          push 6 to the stack
                         .         output top of the stack
                          §        (0x7f) terminate program

5

5つの言語、CHAINEMinkolangフーBrainf ** K-NG、及びVitsy、5分の21 ^ 3 = 0.168

2|<«+!@"3".N+m

5N»

Brainf ** k-ng

2|<«+!@"3".N+m

5N»
  <            go left (should still be ok)
    +!         output 1
      @        halt execution

シャイネ

2|<«+!@"3".N+m

5N»
2              «add 2 to the current string»
 |<            «take off and put on the string (no op)»
   «           «comment»

  »
               «implicit output»

フー

2|<«+!@"3".N+m

5N»
       "3"     print three

ミンコラン

2|<«+!@"3".N+m

5N»
2              C push 2 to the stack [2] C
 |             C mirror C
2              C push 2 to the stack [2,2] C
             m C ignored C
            +  C add top two [4] C
           N   C output C
          .    C terminate program C

ヴィツィー

2|<«+!@"3".N+m

5N»
2              push 2
 |             mirror
2              push 2
             m pop 2, goto line 2
5              push 5
 N             output 5
  »            ignored

おそらく> <>または何かを追加できます。


1
ご存知のように、私はミラーの良い使用法を見つけたことがありません。xD
アディソンクランプ

5

CraneflakBrain-Flak ClassicRain-FlakBrainHackBrain-FlueueminiflakminiHack:.1020

(([]()()()<()()()>)()()){}#{}({}())

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

説明

ここで最初に行うことは、BrainHack、CraneFlak、Rain-Flakインタープリターの間でコメントの読み方に違いがあることです。Craneflakにはコメントがありません。Rain-Flak #では残りの行を#{...}コメントし、BrainHack では内部をコメントします。

各言語の意味は次のとおりです。

Rain-Flak: (([]()()()<()()()>)()()){}         -> 3
BrainHack: (([]()()()<()()()>)()()){}({}())   -> 4
Craneflak: (([]()()()<()()()>)()()){}{}({}()) -> 1

次は、脳フレークとミニフレークの違いです。Rain-FlakとBrainHackはどちらもminiflakをサポートしており、余分な操作はすべて削除されます。これは、彼らが失うことを意味[]し、<...>

Rain-Flak: (()()()()()())         -> 6
BrainHack: (()()()()()())({}())   -> 7

次に、Brain-FlakとBrain-Flak Classicの違いがあります。クラシックで[]ある-1代わりに、私たちの結果はそれ2作り、定期的な雨・フラックに比べ1以下であることを意味し、スタックの高さ、の。

最後に、脳流と脳流の違いがあります。Brain-Fluueでは、スタックの代わりにキューが使用されます。通常、brain-flakは3を押してから5を押して5をポップしますが、脳内ではポップは5ではなく3を取り除きます。


4

天の川1.0.2CJamおよびSTXTRM、20バイト/ 3 ^ 3 = 0.741

追加できる言語が少なくとも1つあると思います。

'2"3""1"1<<1>;;"2"3;

説明


天の川1

天の川では、文字列は二重引用符のペアでのみ示されます。一重引用符は、コマンドラインから入力を読み取ります。存在しない場合、空の文字列をプッシュします。大なり記号と小なり記号は、スタック全体をそれぞれ右および左に回転させます。最後に、セミコロンは上の2つのスタック要素を交換します。

スタックの視覚化は次のとおりです(表示されるスタックは、リストされた操作が発生した後の結果です)

["", 0]                                             #  default stack

["", 0, ""]                                 #   '   #  read input from command line
["", 0, "", 2]                              #   2   #  push 2 to the stack
["", 0, "", 2, "3"]                         #  "3"  #  push "3" to the stack
["", 0, "", 2, "3", "1"]                    #  "1"  #  push "1" to the stack
["", 0, "", 2, "3", "1", 1]                 #   1   #  push 1 to the stack
[0, "", 2, "3", "1", 1, ""]                 #   <   #  rotate the stack leftwards
["", 2, "3", "1", 1, "", 0]                 #   <   #  rotate the stack leftwards
["", 2, "3", "1", 1, "", 0, 1]              #   1   #  push 1 to the stack
[1, "", 2, "3", "1", 1, "", 0]              #   >   #  rotate the stack rightward
[1, "", 2, "3", "1", 1, 0, ""]              #   ;   #  swap the top two stack elements
[1, "", 2, "3", "1", 1, "", 0]              #   ;   #  swap the top two stack elements
[1, "", 2, "3", "1", 1, "", 0, "", 2]       #  "2"  #  push 2 to the stack
[1, "", 2, "3", "1", 1, "", 0, "", 2, "3"]  #   3   #  push "3" to the stack
[1, "", 2, "3", "1", 1, "", 0, "", "3", 2]  #   ;   #  swap the top two stack elements

CJam2

CJamでは、文字列は二重引用符のペアでも示されます。単一引用符は、次の文字の文字コードをプッシュします。文字コードが出力されると、対応する文字として出力されます。大なり記号と小なり記号は期待どおりに動作し、上位2つのスタック要素の順序を評価します。最後に、セミコロンは一番上のスタック要素を破棄します。プログラムの終了時に、スタックの内容が出力されます。

スタックの視覚化は次のとおりです(表示されるスタックは、リストされた操作が発生した後の結果です)

[]                         #  default stack

['2]               #  '2   #  push the character code of "2" to the stack
['2, "3"]          #  "3"  #  push "3" to the stack
['2, "3", "1"]     #  "1"  #  push "1" to the stack
['2, "3", "1", 1]  #   1   #  push 1 to the stack
['2, "3", "1"]     #   <   #  leave the greater of the top two stack elements on the stack
['2, 0]            #   <   #  leave the greater of the top two stack elements on the stack
['2, 0, 1]         #   1   #  push 1 to the stack
['2, 1]            #   >   #  leave the lesser of the top two stack elements on the stack
['2]               #   ;   #  pop the top stack value
[]                 #   ;   #  pop the top stack value
['2]               #  "2"  #  push the character code of "2" to the stack
['2, "3"]          #   3   #  push "3" to the stack
['2]               #   ;   #  pop the top stack item

STXTRM3

MSMでは、演算子ではないものはすべて文字としてスタックにプッシュされます。セミコロンは、一番上のスタック要素を複製します。プログラムは、演算子がなくなるか、スタック上に単一の要素が存在するまで継続します。

スタックの最後の文字は3、最後の演算子によって複製されます。3は、プログラムの最後の最上位要素であるため、出力されます。


4

5言語、18バイト/ 5 ^ 3 = 0.144

ウロボロスPip、QBasic、Foo、およびPyth

5'"4"()"
1?3'@n()2

1.ウロボロス

プログラムの各行は、尾を食べるヘビを表しています。

ヘビ1

プッシュ5'ノーオペレーション、プッシュある52(ASCIIコード"4")。(ヘビが数をポップし、その尾の多くの文字を食べるようになります。これにより、命令ポインタ(およびスネーク全体)が飲み込まれるため、実行が停止します。

ヘビ2

プッシュは1、乱数(プッシュ?)、プッシュし3'何もしません。@1スタックの最上部に回転させ、n数値として出力し3、スタックの最上部を残します。次に(、ヘビの端からこの多くのキャラクターを食べ、指示ポインターを飲み込んで停止します。

ここで Stack Snippetインタープリターでこのプログラムをオンラインで実行できます

2.ピップ

プログラムのほとんどは、評価されて破棄される式で構成されます。

  • 5
  • '" (文字リテラル)
  • 4
  • "()"
  • 1?3'@ (三項式)
  • n (変数、=改行)
  • () (なし)

最後に、最後の式2が出力されます。

3. QBasic

以降'はすべてコメントです。したがって、最初の行5は、行番号であるに要約されます。2行目1は、行番号で?3あり、のショートカットですPRINT 3

(行番号が順不同であることは明らかに問題ではありませんが、問題があれば簡単に修正できます。)

4.フー

ほとんどすべてが無操作です。"4"印刷し4ます。括弧(x2)は、現在の配列セルがゼロになるまで実行されるループです。これはすぐにtrueになり、ループは終了します。@、数値が後に続かない場合、現在の配列セル(0に初期化された)の値を取り、それをスタックにプッシュします。

私は、2番目の比類のないもの"がどのように処理されるべきか完全にはわかりません。オンライン版は、挑戦のルールが許す出力に改行を追加しているようです。

5.パイス

5出力されます。次に、プログラムは'"4"、という名前のファイルからの読み取りを試みます4。そのようなファイルが存在しない限り、これはプログラムをエラーで終了するはずです。(オンライン版では、オンラインでname 'open' is not definedファイルを開くことが許可されていないためだと思われます。)

"行1の終わりにある漂遊により、行2が実行前に構文エラーを引き起こさないことが保証されます。



@デニスありがとう!Esolangsページには、そのインタープリターへのリンクがありませんでした。
DLosc

ここだインデックス現在利用可能な言語のは。あなたが私に1つを追加したい場合は、チャットで私にPingしてください。
デニス

4

4言語、24バイト、24/4 ^ 3 = 0.375

print(1//0.5--1+1/2*2
);

1. PHP

print(1);1に等しいPHP実行

2.ルア

print(1//0.5);2に等しいLuaが実行されます

3. Python 2

print(1//0.5--1+1/2*2);3に等しいPython 2が実行されます(整数除算)

4. Python 3

print(1//0.5--1+1/2*2);4に等しいPython 3が実行されます(浮動小数点)


いい答えです、私は従来の言語での答えが好きです:-) ppcgでゴルフを楽しんでくれることを願っています:-)面白いと思うなら、以前の挑戦を試してください:-)少しトリッキーで、もっと難しい基本的な:-)
スチューウィーグリフィン

チャレンジで説明されているオープン100担当者の賞金に興味があるかもしれません。Outgolf Sp3000(28バイト、4言語)は、従来の言語(リンクで定義されている)のみを使用し、あなたのものです:-)残念ながら、python 2と3は、賞金チャレンジではユニークとは見なされません。
スティービーグリフィン

3

Brainfuck-ng、Foo、> <>、9バイト/ 3 ^ 3 = 0.333 ...

#+!"2";n3

Brainfuck-ng

それが認識する文字だけです+!

+ Increment cell by one
! Print as integer

プリント 1

フー

すべてを引用符で印刷します。

"2"

プリント 2

> <>

#ポイントを左にミラーリングし、3をスタックに3プッシュし、整数として出力し、プログラムを停止します。n;

#      ;n3

2

3言語、82 83/3 ^ 3 = 3.074 ...

で動作します??? ホワイトスペース、およびビートニック。むしろ、それらの言語で動作するはずですが、数日間テストすることはできません。とにかく、ここにコードがあります:

K... Jax... Jy... Jy...   ...
My...    My...
... ...     ......................XO!

1. ???

.................................................!

??? は基本的に頭が痛いですが、従来の文字の代わりにコマンドとして一般的な句読点を使用します。.現在のメモリセルをインクリメントします。これは49回行われます。!現在のメモリセルを取得し、文字として出力します1

2. 空白

[Space][Space][Space][Tab][Line Feed]
[Tab][Line Feed]
[Space][Tab]

空白は、空白以外のすべての文字を無視する言語です。ここでは、読みやすい形式に変換しました。最初の行2はスタックにプッシュし、2番目の2行はスタックの先頭を数字で印刷します(ここ)2
結合コードでは、技術的な制限により、タブを4つのスペースに置き換えていることに注意してください。

3. ビートニック

K Jax
Jy Jy
My My
XO

Beatnikは、各単語がスクラブルスコアに変換され、それらのスコアがコマンドとして解釈される言語です。最初の行17はスタックにプッシュされます。2行目はスタックの上部を2回複製し、3行目はスタックの要素に2回一緒に2回追加1751ます。最後の行は、スタックの一番上の文字を印刷します。ここ3
オリジナルのBeatnik仕様にエラーがないと仮定して、私はFace ValueでBeatnikを使用していることに注意してください。また、私は北米英語スクラブルスコアリングシステムを使用しています。

今のところ明確でない場合、これらの各言語は特定の種類の文字(句読点、空白、および文字)のみを受け入れるため、このポリグロットの作成は個々のプログラムの作成と同じくらい簡単です。唯一の本当の「トリック」は、空白コードを使用して、Beatnikから単語を分離することです。それを超えて、個々のプログラムはまったく重複しません。


2
3 ^ 3 = 27 ==> = 3.037037037037037 27分の82 ...
AdmBorkBork

1
空白コードは2ではなく0を出力しますここここでテストしまし
デニス

@Dennisありがとう、符号ビットを省略していました。
マイクブファルデシ

2

5言語、175/5 ^ 3 = 1.4

賞金が要件を変更しているため、最初の回答では満足できないと感じるようになりました(ただし、一般的なチャレンジの方法ではまだ満足しています)ので、別の回答を投稿することにしました。

だから、賞金のチャレンジにふさわしい私のソリューションはここにあります:

コンパイルします

  • C99
  • objC90
  • C ++ 0x
  • ルビー
  • Perl
#if __cplusplus
#define x\
=begin\
=pod
#endif
int a=
#ifndef x
1//**/
+1
#else
3
#endif
;int main(){printf("%d",a);}
#ifdef f
=end
puts 5;
=begin
=cut
print"4";
=end
#endif

2

3言語、15バイト、スコア0.555 ...

後でさらに言語を追加します。

2//1+1#😅😨

1.絵文字

Emotinomiconは、文字列ではないテキストをほとんど無視します。😅1をプッシュしてスタックし😨、TOSを数値として出力します。

2. Javascript

JavaScriptのコメントはで始まる//ため、2一部のみが実行されます。

3. Python 2/3 REPL

Pythonのコメントはで始まる#ため、2//1+1一部のみが実行されます。//Python 3の整数除算であり、Python 2の整数除算と同じ/です。2を1で除算すると2になり、1が3になります。


2

4言語、97バイト、0.37890625

s="1";s=~-3;2//2;'''/.to_s.ord;"=;print 4;
__DATA__
=1;
";#'''#";print=s=>console.log(3)
print(s)

ルビー

これは設定s"1"、使用して比較=~に対して-3無効コンテキストでは、分割しようとした2ことで/2;'''/.to_s.ord、その後含む新しい文字列を開始し=;print 4; __DATA__ =1;、その後、コメントを打つprintsはまだです1

Python

セットs"1"上記のあたりなどは、その後、再びそれを設定~-3しています2。私たちは、整数の除算を実行し2//2、その後含むドキュメント文字列があります、/.to_s.ord;"=;print 4; __DATA__ =1; ";#コメント、最終的に続いて、printINGのsままです、2

JavaScript

に設定してsから上記のように"1"再度設定すると、行にコメントが続きます。その後、我々は変数を設定します。出力を3にハードコードする関数の定義が続く短い文字列があり、次の行で呼び出されます。~-32__DATA__1;#'''#print

Perl

s/"1";s/~-3;2\/\/2;'''\/.to_s.ord;"/prints 4と同等の置換を実行し、残りの文字列は__DATA__識別子の後ろでマスクされます。


2

QBasic、QBICおよび> <>、18バイト/ 3 3言語= 0.66666ポイント

1:?v+1'-5`
''`>3n;

壊す:

1. QBasic(IDEを入手

1:          Line number 1
  ?         Print
   v+1      undefined var v = 0 + 1 = 1
'-5`        The rest of theis code is a QBasic comment
''`>3n;     As is this

2. QBIC(インタプリタを入手

1     inserts a 1 in the code - mostly harmless
:     Reads from the cmd line. Nothing there, creates an empty variable a
?     Print
v+1   v is initialised to 6, +1 = 7
'     Code Literal: everything till the ` is passed to QBasic without processing
 -5`  7-5 = 2

''`>3n; Code literal with the first literal being a ': comment in QBasic

3.> <>(オンラインで試す

1:  Push a 1 on the stack, duplicate stack
?   Pop top off the stack and skip next instruction if that's a 0
v   Move downwards - rest of the line is ignored

>   move to the right
3   Push 3 onto the stack
n   Print the top of the stack as a number
;   End the program

1
スコア内の言語の数をキューブ化する必要があると思います(例:18 /(3 ^ 3))
数学中毒者

1

JavaScript、HTML、およびPHP、72バイト/ 3 ^ 3 = 2.67

1<!top?2:2//><!--<?='--'.'><script>document.body.innerHTML=3</script>'?>

HTMLでは、これは先頭の1を出力し、無視します <!window?2:2//>タグを、残りはHTMLコメントです。

JavaScriptでは、1<!window?2:22を評価して出力し(これはコンソールで実行する必要があります)、残りはコメントです。

:PHPでは、以下は、サーバから出力され1<!top?2:2//><!----><script>document.body.innerHTML=3</script>たHTMLのを置き換え1ては3


1
PPCG.SEへようこそ!素晴らしい最初の投稿!2つのこと:通常、REPLベースの回答(Javascriptプログラム)は好きではありません。さらに、PHPコードはオンラインインタープリターに入れたときに実行されないようですが、PHPはどのように機能しますか?
GamrCorps

ありがとう!まあ、それはつまり、(技術的にはPHP + HTMLですこれはcode.phpのソースコードであれば、訪問。サイト/ code.phpブラウザでは、3を表示
カイウサギ

ここでそれを試してみてください:mowbl.com/se.phpを
カイウサギ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.