多言語チャレンジ


12

我々は(中ポリグロットの課題を持っていたすべての楽しみの後の最近の)過去に、出力が2つの言語になり得るチャレンジについてはどうでしょうか。

答えはブール入力を受け入れb、テキスト"true"またはを出力する必要があります"false"。別の言語で実行する場合、"waar"または"onwaar"またはのその他の翻訳を出力する必要がtrueありfalseます。

入力

  • 入力は明確に区別できる真実/偽です。許容値は、実際の値T / F、ビット、int、または(空の)文字列です。
  • 入力は提出物のすべての部分で同じである必要があります。

出力

  • 出力は関数によって返され、に書き込まSTDOUTれ、ポップアップウィンドウに配置され、3D印刷およびメール送信などされます。

  • 出力はの状態を表す必要がありbます。したがって、「真」は「true」、「waar」、「falsey」を「false」、「onwaar」などに出力する必要があります。

  • 異なる言語は異なる出力方法を使用する場合があります。

使用言語

  • あなたの出力のいずれかでなければならない"true""false"

  • プログラミング言語の異なるバージョンは、この課題の異なる言語としてカウントされます。

  • 人間の言語の異なる方言は、この課題の異なる言語としてカウントされます。

  • ポリグロットを3つ以上のプログラミング言語に拡張できます。すべてのプログラミング言語は、個別の人間の言語を出力する必要があります。

ほとんどの言語が組み込まれた答えが勝者として宣言されます。関連付けられている場合、バイトカウントが考慮されます。


あなたのプログラムが、実行に使用するインターペッター/コンパイラーのバージョンをチェックすることを意図しているのですか?
コードネーム

1
ある"True""False"の代わりに許容必要"true""false"
ジョナサンアラン

1
@ジョナサンアラン私の悪い。はい、出力には問題ありません。
-steenbergh

3
出力が3Dプリントされ、メールで返送されるエソランが見たいです。
ETHproductions

2
これは人気コンテストには広すぎます。Xの創造的なポップの短所は範囲外になりましたか。
デニス

回答:


5

Dyalog APL243 237 バイト:14言語、131 *まで拡張可能

Soakuのおかげで-6バイト。

⎕IO←0多くのシステムでデフォルトである必要があります。0またはの入力を求めます1

((⎕AV'ëáàÆÅÄòðÓÈÇ')⍳⍎⎕D∩⍨41⊃#⎕WG'APLVersion')⊃⎕⊃s¨⌽(s←{1↓¨⍵⊂⍨⍵=⊃⍵})';,true,adevarat,haqiqiy,otito,tunay,bener,prawda,dogru,vrai,that,wahr,vero,verdade,cierto;,false,fals,yolg''on,eke,mali,palsu,falsz,yanlis,faux,sai,falsch',18',falso'

バージョン(9.0〜16.0、マイナーバージョン)に応じて、発音区別符号なしで、英語、スペイン語、ポルトガル語、ドイツ語、ベトナム語、フランス語、トルコ語、イタリア語、ポーランド語、スンダ語、フィリピン語、ヨルバ語、ウズベク語、またはルーマニア語で出力します。

⎕AV⍳'ëáàÆÅÄòðÓÈÇ'AトミックVセクタのインデックス(151 142 141 133 132 131 122 121 111 102 101 96)

((... )⍳... )の位置を見つける

評価された

⎕D∩⍨交点Dの igitsと

4↑ の4つの最初の文字

1⊃ の2番目の要素

#⎕WG'APLVersion' バージョン番号

(... )⊃次にそれを使用して選択します

⎕⊃ 入力の(0:最初; 1:2番目)の要素

関数s(これから定義します)のそれぞれに適用されます

の逆

(s←{... }) sが適用されます– sは次のように定義されます

1↓¨ それぞれからドロップされた最初の文字

⍵⊂⍨ 分割された引数

⍵= 引数の文字は等しい

⊃⍵ 引数の最初の文字

';,true,adevarat,...,falsch',この文字列の先頭に

18⍴',falso' その文字列から周期的に取られる18文字

*バージョン12.1以降、バージョン番号にはビルド番号が含まれているため、この文字列から取得する文字数を増やすことで、131種類のラテンスクリプト言語すべてを簡単にカバーできます


とてもいい答えです!そして、拡張性に関する優れた証拠。
-steenbergh

243バイトを数えます。
コナーオブライエン

@ ConorO'Brien修正。ありがとう。
アダム16

遅いことはわかっていますが、prawdziwyto prawdafalszywytoを置き換えることで数バイト節約できますfalsz。短いフォームの方がここに収まり、スコアが上がります。
RedClover

11

6言語、169バイト

入力として期待する0\n1\n、または次の文字列を出力します。

  • Python 2(オランダ語vals/waar)、
  • Python 3(フランス語faux/vrai)、
  • Ruby(英語false/true)、
  • CJam(ノルウェー語usant/sant)、
  • Golfscript(デンマーク語usand/sand)、
  • Befunge-93(イタリア語falso/vero)。

"#{puts gets>?1;exit}"" "#"& 1v
""
print('vwfvaaarlauasrxi'[int(1/2*4+int(input()))::4])
""#";;;;ri"u">"sant"+o
""""
__END__
]0=~"u">"sand"""#@,,,,"vero"  _"oslaf",,,,,@

1
デンマーク語の偽はファルスクです。
アダム

そのprint声明に対して2つの賛成票を差し上げます!
-steenbergh

10

すべてのFunges、6言語、146バイト

💥3Dで!💥

A vv"faux"0"vrai"mv#<v&#;9*j"kslaf"6j"etke">:#,_@;
; >"otreic"0"oslaf"v^<
&^>"murev"0"muslaf">
&^&<"false"0"true"<
>_>:#,_@
^_^

わかりやすくするために、コードの2つのプレーンを分離して、レイヤーがどのように階層化されているかを確認できるようにしました。ディスクでは、これらの2つのブロックは、上の行の終わりにフォームフィード文字で区切られます。

   h"vals"0"waar"<

ルールでは、言語の異なるバージョンは別個の言語としてカウントされるため、これはFunge / Befungeの6つのバージョンです。:)

デニスのおかげで、BefungeのすべてのバージョンをTIOでオンラインでテストできるようになりました。ただし、現在UnefungeとTrefungeのバリアントの実装は動作していません。そのため、Rc / Fungeをお勧めします。

ABefunge 93および96では無視されますが、97 ではAbout Faceコマンドであり、98ではサポートされていないため、反映されます。これは、93と96がv下方向に続き、97と98がプレイフィールドの反対側に回り込むことを意味します。

Befunge 96では;、行の先頭にスペースが続くとコメントとしてマークされるため、その行はスキップされ、インタープリターは> 3行目ます。93では、通訳は>は2行目に。

97/98パスは右から左への最初の行に続き、;コメントマーカー内のセクションをスキップして&コマンドをブリッジし、最終的にUベンドシーケンスに到達します。v<^<。Unefungeでは、これらの方向の変更はサポートされていないため、インタープリターは方向を反転し、コメント内で以前スキップされたセクションを実行します。Befunge / Trefungeでは、左に続きます。

Befunge 97では、mコマンドはサポートされていないためスキップされます。そのため、インタープリターは最初の行に沿って続行します。98では3Dのみであるため、Befunge(2D)に反映され、インタープリターはvその右側から4行目まで続きます。Trefunge(3D)では、z軸に沿ってレベルを2番目の平面に転送するHigh-Lowブランチです。

Unefungeの場合を除いて&、ユーザー入力を取得するためのコマンドの1つに送られる前に、各バージョンが別々の行から文字列ペアを収集します。次に、これらのコードパスはすべて^、2番目の列のコマンドを介してマージされ、プログラムフローがプレイフィールドの上部を上方向に進み、再び下部に折り返されます。

最後^_^に、ユーザー入力に基づいてどのパスをたどるかを決定するシーケンスがあります。0の場合、出力シーケンス(>:#,_)に直接進み、偽の文字列を書き出します。1の場合、最初に実行>_してスタックから最初の文字列をクリアし、真の文字列を出力します。


説明が役立つだろう
-user41805

1
とてもいい答えです。同じ言語のすべての異なるバージョンを使用すると、本当に微妙になります。
-steenbergh

5

5言語、249バイト

注:\rand \eはリテラルのラインフィードおよびエスケープ文字\x5bですが、Rubyは正規表現の文字クラスについて不平を言っています。

パーティーに少し遅れて、決して勝者ではありませんでしたが、感謝祭の挑戦のために多言語に取り組み始め、少し遅れているかもしれないと感じたので、これに変えました!

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

説明

Python:True/False

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

ここでは、セットq0//1これは0、我々が持っている、'''他のコードの大部分を含む文字列を含む配列を格納Falseし、Trueそしてなインデックス01、それぞれの入力を割り当てるb(あるべき0か、1を意味するFalsyTruthy)、その後の目のインデックスを示し、または。printbaFalseTrue


ルビー:Vrai/Faux

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

Pythonのスクリプトと同じように、私たちは、変数を設定しqますが、Rubyでこれをに設定されている0 / /1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ordRubyは、このダウンを破るように、0/「ゼロで分割」と次のように/「正規表現リテラルの始まり」と。このリテラルを使用すると、PHPコードを隠してPythonを開始でき'''ます。を追加する.to_s.ord必要があるのは、正しいオペランド/がaである必要があるためFixnumです。この後、私たちは、関数定義input()や変数をTrueし、False彼らのフランスの対応を含み、最終的には、文字列を開始するために'次の行に続きます。最後に、我々は、アレイの作成aが含ま"Vrai""Faux"して使用してそれらを選択input()ED番号を01


Perl:Waar/Vals

'0//1;\'\'\'<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q}+q{0;True="Vrai";False="Faux";\'';sub a{<><1?Vals:Waar}'
input=prompt;print=alert;True="Vero";False="Falso"//\'#\'\'\'
a=[False,True];b=input();1'+1;print(a[b])

Perlでは、q=..=q+...+およびq-...-ブロックは私はこれらを交換してきた上記のコードでは、珍しい区切り文字を使用してリテラルを引用しています'...'。ほとんどのコードはリテラル文字列に含まれていますsub aが、がより小さい<><かどうかをチェックする(!を含む)を定義して、またはのいずれかを返します。実際に呼び出した結果だと、引数のどの裸の単語が含まれている配列リファレンスです。STDIN1WaarValsprint(a[b])printsub a[b]b


JavaScript:Vero/Falso

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

最初の行は、主に部門によってコメントアウトされているため0//1//JavaScriptの行コメントです)、単にに設定q0ます。自分のPythonの名前にJSの機能をマッピングし、変数を設定すると、次の行のお得な情報TrueFalseイタリア語の文字列をするには、最終的に我々はイタリア語の配列に設定して使用して選択し、Rubyのコードと同じように実行するinput01


PHP:Ekte/Falsk

die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));

PHP <?...?>は、他のすべてが出力される間でのみコードを実行するため、ここでのコードは、単に改行(現在の行の先頭に戻すため)とANSIエスケープシーケンスを出力して、現在の最後までクリアします入力文字(または)が真実であるか偽であるかに応じて、Ekteまたはそのいずれかに続く行。Falsk01



3

C#、Java、104バイト

ゴルフ済み:

String M(Boolean b){String s=b+"";if(s=="True")return "Wahr";if(s=="False")return "Falsch";return b+"";}

ゴルフをしていない:

  class MultiLingualChallenge
  {
    public String M(Boolean b)
    {
      String s = b + "";
      if (s == "True")
        return "Wahr";
      if (s == "False")
        return "Falsch";
      return b + "";
    }
  }

テスト:

C#

Console.WriteLine(new MultiLingualChallenge().M(true));
//Wahr
Console.WriteLine(new MultiLingualChallenge().M(false));
//Falsch

Java

System.out.println(new MultiLingualChallenge().M(true));
//true
System.out.println(new MultiLingualChallenge().M(false));
//false

説明:

呼び出すときToString()toString()、それぞれC#とJavaでのブールに、C#は、資本の最初の文字で文字列を出力、TrueそしてFalse、しかし、Javaはすべて小文字で出力しますtruefalse

Console.WriteLine(true+"");
//True

System.out.println(true+"");
//true

2

2言語、60バイト

print('onwaar'[2*int(input()):]);1#¶ị“¡ẈẆ“⁸1»

言語は次のとおりです。

  • ゼリー true false
  • Python3 waar onwaar

注:Jellyバイトではなく、UTF-8バイトがあります。


1

Lua / JavaScript、68バイト

x=1//1print(...and"true"or"false")
--x;alert(prompt()?"vrai":"faux")

なぜゴルフをしたのかわかりません。私はただそれを感じました。


1

JavaScript / BF

これらの両方の言語では、入力は偽と見なされず、入力は真と見なされます。

プログラムの構造が左に90度回転すると、BFシンボルは都市の塔のように見えます:)

オンラインで試してみてください(BFの真のテストケース)!

オンラインで試してください(BFの誤テストケース)!

console.log(prompt()?"true":"false")
/*
           >,[>
+          <<]>>[->-<]
+          >[<->[-]]<>[-]<[>>
+++        [->
++++       <]>[->
++++++++++ <]>---.>]>
++++++++++ [->
++++++++++ <]
+++        [->
+++++      <]>.<
++++       [->----<]>--.<
+++        [->
++++       <]>
+          .<
+++        [->---<]>-.
*/

説明

JavaScript

場合はprompt、真(つまり空ではないためでありますprompt、出力を返す文字列)true、または他の出力false

BF

出力 sand入力がある場合は(trueの場合はデンマーク語usand)、入力が空の場合は出力(false)します。

TL; DR入力が空でない(つまりtrue)場合、何も出力しません。入力が空(つまりfalse)の場合、出力u。次に、入力が真か偽かに関係なく、出力sand

私はインスピレーションを受けています https://esolangs.org/wiki/Brainfuck_algorithmsますて、プログラムのロジックを構築しました。

入力してください。入力が空でない場合、メモリをインクリメントし、このセルを「セルA」と呼びましょう。ifステートメントの終了

>
,[
>+
<<
]>

「Cell A」の値をと比較します0。それらが等しい場合、「セルB」を1にするか、そうでない場合はにします0

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

「Cell B」が1の場合、output u。ifステートメントを閉じる

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

出力 sand

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

BFバージョンではu、条件付きで出力すべきではありませんsか?
ハイパーニュートリノ

@AlexL。u条件付きで出力します
user41805

ああ。説明がs条件付きで出力すると言うので、私は混乱しました。明確にするためにそれを修正できますか?とにかくいい答えです。
ハイパーニュートリノ

If input is empty (ie false), output `s`.それがアレックス・Lを混乱させた部分だと思います。
エリックアウトゴルファー

@AlexL。間違いに気づいたので、今すぐ編集しました!
user41805
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.