私はあなたが探している言語ではありません!


182

コードを見つけて、それがどの言語で書かれているのかわからないのは面倒ではありませんか?この課題は、これを幾分解決しようとします。

チャレンジ

2つの異なる言語で実行すると、文字列を出力するプログラムを作成する必要があります。

This program wasn't written in <language program compiled/interpreted in>, it was built for <other language the program can be run in>!

  • 出力では、言語名に正式な大文字を使用する必要があります。例:CJam、C ++

  • どちらのプログラムもユーザーからの入力を受け付けません。

  • 両方の言語で実行する場合、出力はstdoutまたは同等のものである必要があります。

  • どちらのプログラムでもstderrへの出力はありません。

  • コメントはどちらの言語でも使用できます。

  • 同じ言語の2つの異なるバージョンは、異なる言語としてカウントされます。

    • これを行うと、プログラムはメジャーバージョン番号を出力し、2つの異なるマイナーバージョンで実行している場合は、マイナーバージョンも報告する必要があります。

    • ビルド済みのバージョン関数を使用しないでください(これには、実行時にすでに評価された変数が含まれます)。

出力例:

PerlおよびRuby:

  • Perl: This program wasn't written in Perl, it was built for Ruby!

  • ルビー: This program wasn't written in Ruby, it was built for Perl!

PythonおよびC:

  • Python: This program wasn't written in Python, it was built for C!

  • C: This program wasn't written in C, it was built for Python!

Python 2およびPython 3:

  • Python 2: This program wasn't written in Python 2, it was built for Python 3!

  • Python 3: This program wasn't written in Python 3, it was built for Python 2!

Python 2.4およびPython 2.7:

  • Python 2.4: This program wasn't written in Python 2.4, it was built for Python 2.7!

  • Python 2.7: This program wasn't written in Python 2.7, it was built for Python 2.4!

これはコードゴルフなので、バイト単位の最短コードが優先されます。


2
「同じ言語の2つの異なるバージョンは、異なる言語としてカウントされます。」だから、Cの前と過去の99コメントのようにだましは有効ですか?簡単^^
ザイビス

1
それを追加し、逆説的に感じますが、ルールに適合します。
ザイビス

1
誰もホワイトスペース/ Pythonポリグロットをしていませんか?
チャールズではない

気にしないで。23の実装を見ました
チャールズ

特定のインタープリターで実行されるプログラムに依存することは、入力としてカウントされますか?つまり、スイッチを入れargv[0]ますか?

回答:


86

Foo / CJam、70バイト

"This program wasn't written in ""Foo"", it was built for ""CJam"\@"!"

Fooでは、多くの人が知っているように、すべてを二重引用符で囲んで印刷し、他のほとんどの文字を無視するか、ほとんどの場合、出力に影響を与えないことを行います。要するに、\@何もせず、文字列はすべてそのまま印刷されます。

CJamでは\、上位2つのアイテムを交換し@、3番目のアイテムを最上部に移動して、文字列を正しい順序に並べます。そして、プログラムが終了すると、スタックに残っているものはすべて自動的に印刷されます。


7
そして、ちょうどそれの楽しみのために、核分裂/ CJamのための同様の75バイトのソリューションがあります:R"This program wasn't written in ""Fission"", it was built for ""CJam"\@'!O
マーティン・エンダー

3
いいね 私が持っていた"This program wasn't written in Clip, it was built for CJam!"3{4-_36+e\}/クリップ/ CJamため。
デニス

5
このスレッドに入ってFooソリューションを投稿しましたが、Fooポリグロットを作成するのがどれほど簡単かを今では誰もが知っているはずです。
-histocrat

Fooプログラミング言語の仕様へのリンクはありますか?
15

1
@ErikEいくつかの説明を追加しました。
jimmy23013

140

C89 / C99、 171 152 136 114 111 107 105バイト

ヒントについては、@ Hurkyls、@ Qwertiys、@ jimmy23013、および@MD XFに感謝します。

ゴルフバージョン:

c;main(){c=-4.5//**/
-4.5;printf("This program wasn't written in C%d, it was built for C%d!",90-c,98+c);}

改変されていないバージョン:

c;

main()
{
    c = -4.5//**/
    -4.5;
    printf("This program wasn't written in C%d, it was built for C%d!",90-c,98+c);
}

少し説明:

Cバージョン以前のC99には、次のような複数行コメントがありました。

/*foo*/

C99では、単一行のコメントが導入されました。このような:

//foo

次のような行をコンパイルすると:

c =-4.5//**/
-4.5;

c99コンパイラのコンパイル関連コードの場合:

c = -4.5 -4.5;

一方、c89コンパイラの関連コードは次のとおりです。

(最初/のコメントはコメントの一部ではなく、therforは演算子として扱います)

c = -4.5 / -4.5;

10
+1で素晴らしい答えが得られます。ただし、Cに不慣れな人には少し説明しておくといいでしょう。
ace_HongKongIndependence

4
@aceこれはC99スタイルのコメントに依存していると思います。4行目で、に注目してください//**/。C89では、除算演算子の後に空のコメントが続きます。C99では、//単一行のコメントを開始するため、残りの行は空白です。したがって、C89では(90-(-4.5/-4.5))89になりますが、C99では(90-(-4.5-4.5))99になります。
kirbyfan64sos15年

14
数バイトを節約する188-cには、の代わりにを使用しますc==99?89:99

1
割り当てにスペースと外側の括弧は必要ないと思います。
-PurkkaKoodari


88

JavaScript / Ruby、170バイト

2.0のみ、編集...少なくとも2.1.5で動作するように表示されない可能性があります:からのアドバイスどおりアップデート@Jordanがうまくいけば、それは今、いくつかの複数のバージョンで動作します!

a='1';c=console=console||eval('def c.log s;$><<s end;c');c.log("This program wasn't written in "+(d=['JavaScript','Ruby'])[b= ~(a=~/1/)]+', it was built for '+d[b+1]+'!')

侵害は、~そのRubyでオペレータが扱う=~(文字列内の最初の一致の位置を返す正規表現一致するように0)、しかしとしてJavaScriptはそれを扱う= ~/1/ある-1(以降/1/に変換されるNaN有し、数値演算のための0値)。


この答えは、Ruby 2.1.5では機能しません。取得:NoMethodError: undefined method `log' for :log:Symbol
エンブレム

@EMBLEM私のテストはOS Xに組み込まれたRuby 2.0で実行されましたが、それ以上はテストしていませんが、他のバージョンでは壊れる可能性があることを示すコメントを必ず追加します!
ドムヘイスティングス

Rubyの最近のバージョンでは、メソッド定義はメソッド名をシンボルとして返すため、evalが返され:logます。;c後に置くことで修正できると思いますend。しかし、=~/ = ~トリックは素晴らしいです!
ヨルダン

保存することもできます。二重引用符の$><<s代わりにputs s、二重引用符を使用して、バックスラッシュをドロップできるように数バイトwasn\'t
ヨルダン

@ジョーダンありがとう!\'しかし、二重引用符での削除を見つけられなかった理由はわかりませんが、$><<あなたが言及した修正を適用して同じバイト数を維持できることを意味します!
ドムヘイスティングス

82

Python 2 / Python 3、92

「標準」Pythonバージョンチェックを使用します(整数除算と浮動小数点除算)。

print("This program wasn't written in Python %d, it was built for Python %d!"%(3/2*2,4-3/2))

3
これは、中に語られたサンドボックスとコンセンサスがこの種のものを可能にしました
ブルー

14
@flawr PythonとCobraは許可されますか?;)
ベータ崩壊

7
@flawr Pythonは、実際にはコメディ~~ group ~~の神、Monty Pythonにちなんで命名されています。
ミュータント

@Mutantoe「Monty」は動物の名前ではないように見えるかもしれませんが、駄洒落は機能しません。
ピエールアラード

57

釣り / > <> 233 217バイト

v++C-CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCC-CCCCCCCCCCCCCCCCCCC+CCCCCC
\   "This program wasn't written in ""><>"  ", it was built for Fishing!"
>r!`ol?!;32.                         Fishing                     ><>!`N

釣りは、漁師が魚を捕りながら歩き回ることに基づいた言語です。最初に彼が歩き回るドックを定義する必要があるこの言語のプログラムを作成する。ドックはプログラムへの制御フローのみを提供します。このプログラムのドックは次のとおりです。

v++C-CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCC-CCCCCCCCCCCCCCCCCCC+CCCCCC

Cコマンドが見つかるたびに、漁師は命令をキャッチするために彼のラインを捨てます。命令が減少し、それぞれ彼のラインの長さを増します。スロー方向を下に変更します。このプログラムで彼が捕まえる魚は次のとおりです。+-v

`This program wasn't written in Fishing, it was built for ><>!`N

> <>は、水の中を移動する魚に基づいた言語です。このvコマンドは魚を下方向に移動させ、\コマンドで右に反映されます。引用符の間のすべてがスタックにプッシュされます。文字列がスタックにプッシュされた後、魚は反対側に回り込み、で下方に反射され\ます。次に、スタックの内容を次のように出力します。

>r!`ol?!;32.

3行目の空白に> <>の印刷ループを配置することで、コードを13バイト減らすことができます(この言語はわかりませんが、釣りの部分に干渉することはないと思います)。:私はこのコメントは、コード全体を処理するかどうかはわかりませんので、ここでhastebinリンクですhastebin.com/quqinozizi(私は3行目の間隔を台無しにしているかもしれませんが、私はすべてが適切に整列されていることと思います)。
コール

@Cole動作します。実際、あなたの提案は実際に16文字を削除します。
TheNumberOne

14
魚と釣りの多声...おそらくその種の最初の!
マークKコーワン

これはとても面白いです!
D.Tate

55

23 / Malbolge、5688バイト

                    bCBA@?>=<;:987
                                                                                        6543210/.-,+*)
                                                                                          ('&%$#"!~}|{zy
                                                                                               xwvutsrqponmlk
                                                                                                  jihgfedcba`_^]
                                                                                     \[ZYXWVUTSRQPO
                                                                                               NMLKJIHGFEDCBA
                                                                                    @?>=<;:9y76543
                                                                210/(L,l*)(!E}
                   |B"!~}|{zyxwvu
                                                                                                     tsrqponmlkjiha
                                                                                                  fed]#a`_^]?zZY
                                                                                         XWVUTSRQ3ONMLK
                   JIHGFEDCBA:^>=
                                                                                                       <;:98705.R21q/
                                                                                               .-,+*#G'&%${"!
                                                                                            x>|{zyxwYutm3k
                                                                                                        ponmlkjihg`&^c
                                                                                     ba`_^]\[ZYXWVO
                   sSRQPONMLEi,HG
                                                                                                      FEDCBA@?>=6Z:9
                                                                                    y76543210/.-,+
                                                                                                          *)('&%$#"y?w|u
                   ;sxwvutm3qSonm
                                                                                                       fkjiha'edcba`_
                                                                                            ^]\[ZYXWVUTSRQ
                   PONM/EiIHGFEDC
                               BA@?>7[;:987w5
                                      432+O/o-,%I)('
                                     &}$#z@~}|{zsxw
                   vutsrqponmlkji
                                                                                                 ha'&dFba`_^]\U
                                                                                            yYXWVUTMRQPONM
                   LKDhH*F?DCBA@?
                                                                                                 8\<;:98765432r
                                                                                        0/.-&J*)('&f$#
                                                                                                       "!~}|{zyxwvuts
                                                                                                       rqj0nmOkjihaf_
                                                                                            %cE[!_^]\[=SwW
                                                                                                     VU7SLpPONMLEJI
                                                                                                          HAeEDC%A@?>=<;
                   :9876543210/.-
                                                                                                       ,+$H('&}${A!xw
                          ={]yxwvutsrk1o
                                                                                                 nmOejib(fedcE"
                                                                                                      `_^]?[ZYRvVUT6
                                                                                     RKo2HMLKJIHAe
                                                                                                           EDCBA@?>=<;:9
                    87w5432+O/.-,
                                                                                                 +*)('&%e#"y?w
                                                                                     |{zs9wvun4rqp
                                                                                                      onmlNjib(fedc
                                                                                           ba`_^]\[ZYXWV
                                                                                                   8TMqKPONMLKDh
                                                                                                      +GFEDCB;_?>=<
                                                                                                    ;:9y7654321*N
                    .-,+*)('&f|{A
                                                                                                       !~}|{]yxwvo5s
                                                                                             rqpinmlkjihg`
                                                                                            &dcbD`_^]\[Tx
                                                                        ;WVUTMRQJnN0F
                                                 KDhH*FEDC<A@?
     >=<5Y92765.R?

プログラムには末尾の改行が必要であることに注意してください。行の末尾に空白が含まれていないため、コピー/貼り付けは正常に機能します。

検証

でMalbolgeコードをテストするには、このオンライン・通訳、それを貼り付けるMalbolgeコードエリアをクリックしLoad/Resetた後、Execute

このオンラインインタープリターで23コードをテストするには、ソース領域に貼り付け、を押しEnterて末尾の改行を挿入23し、コンソール領域に入力して(デフォルトの23.dezsy表記から自動検出に切り替えます)、をクリックしますRun Interpreter!


20
おい...あなたのコードで爆弾が消えたようです!
D.Tate

8
o_0 Malbolgeコードをどのように書いたのですか
Pavel


55

LUA / C - 182の 164バイト

#if 0
print"This program wasn't written in Lua, it was built for C!"--[[
#endif
main(){printf("This program wasn't written in C, it was built for Lua!\n");}/*]]--*/

Luaが最初の行のハッシュマークをコメントとして扱う機能を利用して、Unixのシバンを許可します。それ以外の場合は、他の言語のコメントを独自のコメントでラップします。

バイトを削減するために、GCCとClangで警告を発するだけの暗黙の動作に依存しています。printfのメイン定義と暗黙定義のintの暗黙宣言。


3
非常に巧妙に行われました!
牛は

2
「include <stdio.h>」の削除が極端すぎる場合は、答えを元に戻します。
ベンポップ

2
//C部分でコメントを使用しないのはなぜですか?2バイト節約します。
BrainStone

54

JavaScript / Haskell、 158バイト 147バイト

一般的なアイデア:互いのコメント構文をこっそり盗みます。

1行で:

u="This program wasn't written in ";v=", it was built for ";j="JavaScript";h="Haskell";{-console.log(u+j+v+h+"!")}//-}main=putStrLn$u++h++v++j++"!"

これがHaskellにどのように見えるか:

-- some variable definitions
u = "This program wasn't written in "
v = ", it was built for "
j = "JavaScript"
h = "Haskell"

-- a comment
{-console.log(u+j+v+h+"!")}//-}

-- the main method that does the dirty deed
main = putStrLn $ u ++ h ++ v ++ j ++ "!"

これがJavaScriptにどのように見えるか:

/* variables can be declared without `var` */
u = "This program wasn't written in ";
v = ", it was built for ";
j = "JavaScript";
h = "Haskell";

/* hey look, an anonymous block! */
{ 
  /* we negate the `undefined` that comes out of console.log */
  -console.log(u+j+v+h+"!")
} 
/* there are two automatic semicolon insertions here:
   one before `}` and one before EOF. */

/* a one-line comment. */
//-}main=putStrLn$u++h++v++j++"!"

3
alertゴルファーです。
wizzwizz4

51

Brainfuck / Foo、769バイト

-[--->+<]>-.[---->+++++<]>-.+.++++++++++.+[---->+<]>+++.[-->+++++++<]>.++.---.--------.+++++++++++.+++[->+++<]>++.++++++++++++.[->+++++<]>-.--[->++++<]>-.-[->+++<]>-.--[--->+<]>--.-----.[++>---<]>++.[->+++<]>-.[---->+<]>+++.--[->++++<]>-.-----.---------.+++++++++++..+++[->+++<]>.+++++++++.-[->+++++<]>-.-[--->++<]>-.+++++.-[->+++++<]>-.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.+++[----->++<]>.------------.-[--->++<]>-.+++++++++++.[---->+<]>+++.--[->++++<]>-.-[->+++<]>-.--[--->+<]>--.+[---->+<]>+++.[->+++<]>++.[--->+<]>-.------------.+++.++++++++.[---->+<]>+++.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.+++[->++<]>.+[--->+<]>++..[--->+<]>----."This program wasn't written in Foo, it was built for Brainfuck!"

非常に複雑で複雑な答え...またはない。


21
くそ、ない再度フー:D
ベータ崩壊

5
私はあなたの考え方が好きです。
ピエールアラード

13
これをBrainfuckで実行すると、Brainfuckは,最後のテキストにあるため入力を待機します。それは割り当てルールに反すると思います。
サイモンフォースバーグ

1
@SimonForsbergはそれは長い時間ですが、オンラインそれをしよう、と私は考えて他のほとんどのようなインタプリタでは、,ちょうどEOFのために、0に電池をセット
破壊可能なレモン

41

C / Python、238文字

これは、要求されたものを100%正確には印刷しませんが、非常に近いものです。バレンタインデーカードの
再起動。

#define def main(){0?
#define print printf(
#define return 0)));}
#define pass 0);

def main():
    print "This program wasn't written in ",
    pass
    print "Python",
    print ", it was built for ",
    print "C",
    return

main();

5
正確でない場合は何を印刷しますか?
ベータ崩壊

4
そのネストされたのprintf事は...素晴らしいです
immibis

4
これは、有効なC.クランは文句はないdef:した後def main()、あなたが実際にメイン用の関数本体を開けないでください。実際にCで答えをコンパイルしてみましたか?
C0deH4cker

5
#define def main(){0?がありません
kay

3
#define return少し泣きます
...-corsiKa

32

C / C ++、136

#include<stdio.h>
int main(){
char*a="++",z=sizeof'c'/2;
printf("This program wasn't written in C%s, it was built for C%s!\n",a+z,a+2-z);
}

フォーマット用に追加された改行。CまたはC ++で試してください。


32
intが2バイトのプラットフォームを使用している場合はどうなりますか?C +コンパイラはどこで入手できますか?
イミビス

@immibis haha​​:Pしかし、深刻なことに、空の構造体トリックが機能する可能性がありますstruct{}s;z=2*sizeof s
。– grc

31

Befunge / > <> 141の 138 134 133 130バイト

@Coleのおかげで3バイト節約されました。

正確には、Befunge-98を使用しています。

\"!><> rof tliub saw ti ,egnufeB"   >" rof nettirw t'nsaw margorp sih"'T>:#,_@'~~~~~~
>l?v"!egnufeB rof tliub saw ti ,><>"^
?!;>ol

次の事実を使用します。

  • \ > <>のミラーであり、Befungeのスワップ
  • 'string'> <>の文字列であり'c、Befungeの文字です

あなたは(私はあなたが考えていないもの)Befungeコードのためにそれを必要としない限り、あなたが一番下の行を置き換えることにより、3つのバイトをオフに剃ることができます?!;>ol
コール

23

PHP / MySQL、147バイト

-- $argc;die("This program wasn't written in PHP, it was built for MySQL!");
SELECT("This program wasn't written in MySQL, it was built for PHP!");

17
最後に、私はちょっと理解します。
MikeTheLiar

1
2バイト少ないため、2行目の括弧を削除できるはずですSELECT"This program wasn't written in MySQL, it was built for PHP!";
。– msh210

2
しかし、これはPHPでは機能しなくなります-解析エラーが発生します。SELECT "..."は有効なPHP式ではありません。
ラズバン

22

Pythonの3 / > <> 177 173 172 167のバイト

5バイトを削る@mathmandanに感謝します!

まあ、これは経験であり、試練でもありました。これはかなり長いので、ゴルフの提案は大歓迎です。テキストを再利用するために最善を尽くしましたが、それは非常に困難でした。

技術的には、このプログラムが出力するのはPython 3です(仕様に合わなかった場合は変更できますが、例ではPython / C出力Pythonがリストされています)。

aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"                 #v   "><>"r~/
a=", it was built for "+v#\a
print(aa[-3::-1]+"Pytho" +"n"+a)
#  .4b;!?lor"!nohtyP r"~/

オンラインの<>インタープリターおよびPython 3インタープリターで試してみてください(> <>インタープリターでは、コードを手動で入力する必要があります)

返却値

This program wasn't written in ><>, it was built for Python!

> <>および

This program wasn't written in Python, it was built for ><>!

Pythonで。

説明(Python)

物事のPython側については、非常に簡単です。私たちが気にするコードは次のとおりです(基本的にコメントのないコード。Pythonではa #で示されます)。Python \では文字列で使用される場合、エスケープ文字であるため、文字列で\"評価されることに注意してください"

aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"
a=", it was built for "+v
print(aa[-3::-1]+"Pytho" +"n"+a)

ここで最も重要なのは、変数に対して実行される操作ですaa

aa[-3::-1]: reverses the string and chops off the quotation marks (thanks to @mathmandan)

したがって、printステートメントは次のように評価されます。

"This program wasn't written in " + "Pytho" + "n" + ", it was built for ><>!"

説明(> <>)

今、私たちはより難しい部分に着きます。もう一度、不要なビットを削除したコードを示します。

aa=" ni nettirw t'nsaw margorp sihT\"\
                          v   "><>"r~/
a=", it was built for "+v \a

   .4b;!?lor"!nohtyP r"~/

ライン1:

aa=" ni nettirw t'nsaw margorp sihT\"\

aa=         pushes 1 onto the stack (evaluates 10==10, basically)
" ni ... \" pushes the first part plus a \ onto the stack.
\           deflects the pointer downwards

現在のスタック(印刷されている場合): \This program wasn't written in

2行目:

行2は、/行1からのポインターの位置のためにから始まり、右から左に移動することに注意してください。

v   "><>"r~/

/     deflects the pointer leftwards
~r    pops the / off the stack and then reverses it
"><>" pushes ><> onto the stack
v     deflects the pointer downwards

現在のスタック: ><> ni nettirw t'nsaw margorp sihT

3行目:

前の行と同様に、この行はで始まり、\2行目でポインターが送信されます。ポインタが最初aに到達すると行を折り返すので、ポインタがどこに行くのか(したがって実行されるもの)の順に説明を書くことに注意してください。

a=", it was built for "+v \a

\aa=       deflect and push 1 onto the stack
", i ... " push the string onto the stack
+v         sum the last two values pushed and deflect

現在のスタック(x「r」とスペースの追加によって形成される文字です。実際の文字ではなく、私からの単なるプレースホルダーです):

xof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT

行4:

ポインターは下方向に続くだけなので、この行はそれ以上の説明を必要としません。

行5:

で始まり、/左に進みます。

.4b;!?lor"!nohtyP r"~/

~"r Python!" pops x off and adds back r and a space
r            reverses the stack
o            pops and prints a character
l?!;         pushes the length of the stack and stops if it's 0
b4.          pushes 11 then 4 then moves to that location (where o is)

現在のスタック(出力が逆転):

!nohtyP rof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT

そして、それは説明のためであるはずです。説明/コードに矛盾がある場合、または何か間違ったことをした場合はお知らせください。説明を書いている最中にもう少しコードを掘り下げたので、古いコードと新しいコードが少し混ざっていたかもしれません。


python 2ではないため、3を追加する必要があると言った場合、それは間違っているでしょう。それは問題ありません。
ブルー

これが唯一のPythonだったら、私はあなたが置き換えることができます信じていaa[:-2][::-1]aa[-3::-1]。この場合、もちろん、これは> <>フォーマットを妨げる可能性がありますが、まだ行っていない場合は検討する価値があります。特にv、前の行の下にスペースが必要だと確信していますが、下print(aa[-3::-1]+"Pytho"の24文字に収まるように見えるのでa=", it was built for "+、スペースを入力してから+"n"+a)。これが他の何かを壊すかどうかはわかりませんが、うまくいけば数バイト節約できます。
mathmandan

@mathmandan素晴らしいアイデアです。コードを更新してクレジットを提供します。
コール

良くやった!参考までに、これはPython 2でも問題なく機能すると思います。Python2では、printステートメントに括弧をドロップすることでバイトを節約できますprint aa[-3::-1]+"Pytho" +"n"+a。ただし、もう1つの質問です。> <>バージョンで1は、元々スタックにプッシュされていたものはどうなりますか?
mathmandan

@mathmandan使用したインタープリターが無効な文字を印刷しないか、印刷された文字がまったく表示されないと思います。正直に言って、なぜそのキャラクターを印刷することが重要でないのかは100%わからない。偶然発見しました。
コール

19

バッチ.BATファイル/バッチ.CMDファイル、194 185バイト

@ECHO OFF
SET a=BAT
SET b=CMD
CALL :F&&GOTO :C||GOTO :O
:C
SET a=CMD
SET b=BAT
:O
ECHO This program wasn't written for %a% File, it was built for %b% File!
GOTO :EOF
:F
md;2>nul
SET v=1

編集:9バイトを保存!し、DLoscのおかげで行方不明を修正しました

はい、BATファイルとCMDファイルには違いがあります。参照。基本的に、CMDがセットERRORLEVELSETBATがここにあることを意味し、そうではない、コマンドERRORLEVEL不正な形式による設定mdコマンドがでクリアされますSET v=1他の1つのバージョンではありません。このスクリプトは、そのニュースグループスレッドの「リッチー」が提供する例に基づいています。

上記の短縮スクリプトはENABLEEXTENSIONS設定されていることを前提としていることに注意してくださいON(すべてのプラットフォームでデフォルトです)。以下の拡張スクリプトは、正しい機能を保証するために明示的に設定します。それがなければ、SETCMD のコマンドはすべての拡張機能を許可せず、(システムによっては)ERRORLEVEL適切に設定されない場合があります。

拡大して発言

@ECHO OFF
setlocal ENABLEEXTENSIONS

REM Call the :FUNC subroutine and branch based on the resulting errorlevel
CALL :FUNC&&GOTO :CMD||GOTO :BAT

REM Just in case. If we reach this, though, hoo-boy ...
GOTO :EOF

:BAT
REM We're a BAT file, so set variables and goto output
SET a=BAT
SET b=CMD
GOTO :OUTPUT

:CMD
REM We're a CMD file, so set variables and goto output
SET a=CMD
SET b=BAT
GOTO :OUTPUT

:OUTPUT
REM Print out the result, then go to end of file
ECHO This program wasn't written for %a% File, it was built for %b% File!
GOTO :EOF

:FUNC
REM Simple subroutine to set the ERRORLEVEL appropriately
md;2>nul
REM Right now, ERRORLEVEL on both CMD and BAT is 1
SET v=1
REM Right now, ERRORLEVEL on CMD is 0, but BAT is still 1

... CMDとBATに違いはありますか?
スタン・ストラム


16

CJam / GolfScript、81 78バイト

"This program wasn't written in "o"GolfScript"", it was built for ""CJam"oo"!"

元の81バイトバージョン:

"This program wasn't written in "["CJam"", it was built for ""GolfScript"]-1a%"!"

14

PHP / Perl、98 96バイト

$a="HP";$b="erl";
//;$a=$b;$b=HP;
print"This code wasn't written in P$a, it was built for P$b!";

これが不正行為かどうかにかかわらず、ダンノ。開始<?タグなしでPHPを実行する唯一の方法はのようなものだからphp -r $(cat codefile.php)です。しかし、それが正当であると仮定すると... //はPHPのコメントですが、Perlでは正規表現です(それ自体、文では何もしません)。残りはかなり一目瞭然です。

編集: Perlのみの部分でベアワードを使用するようになりました。そもそも両方の言語でそれらを使用したかったのですが、「stderrへの出力があってはならない」とは逆に、PHPを実行すると警告が表示されます。


1
<?'>#';両方の言語で有効な構文です。
プリモ

14

Ruby / Python、105文字

a=["Ruby","Python"];a.sort();print("This program wasn't written in "+a[0]+", it was built for "+a[1]+"!")

これは本当に良いです!コメントが使用されていないことが特に気に入っています。
スタイフ

14

JavaScript 1.8 / JavaScript 1.7、89バイト

a=![].reduce;`This program wasn't written in JS 1.${8-a}, it was built for JS 1.${7+a}!`

Array.prototype.reduceは1.8で新しく追加されたため

編集:a使用 する代わりに直接初期化することにより、7バイトをゴルフアウトreverse()

編集: JavaScriptと書くことができJS、8バイトを節約

編集: 変数を使用しない場合はさらに3バイト節約できることを指摘してくれたHediに感謝しbます

EDIT:計算によって6バイトアウトGolfed 7+a8-aa=1減らす場合が定義されている(JS 1.8)とa=0それが(JS 1.7)定義されていない場合

編集:ヘディは、テンプレート文字列の使用を示唆する6バイトを増やしました

編集: ETHproductionsは2バイトを提案しa=!![].reduce;ましたが、a=[].reduce?1:0;

編集: no1xsyzyはブールチェックを逆にすることを提案するもう1バイトをゴルフアウトしました


「JavaScript」ではなく「JS」で、「JS 1」を2回使用 あなたの文字列では、変数bを使用するよりも短くなります。
エディ

テンプレート文字列を使用して短くすることができます:「このプログラムはJS 1。$ {7 + a}で作成されたのではなく、JS 1。$ {8 + a}向けに作成されました!」
Hedi

2
に変更すると2バイト節約できると思います。a=[].reduce?1:0;a=!![].reduce;
ETHproductions

@ETHproductionsありがとう、でもうまくいくとは思わない。a値を保持する必要があります、1または0ではなく、trueまたはfalse
マリオトゥルッコ

@ETHproductionsごめんなさい、あなたは正しいです、私は試しましたが、それは動作します。ありがとう!
マリオトルコ

13

SWI-Prolog 6 / SWI-Prolog 7、156バイト

P='SWI-Prolog ',A=6,B=7,(is_list(""),N=A,M=B;N=B,M=A),atomic_list_concat(['This program wasn\'t written in ',P,N,', it was built for ',P,M,'!'],W),write(W).

二重引用符""は、7より古いSWI-Prologバージョンでは文字列コード(つまり、文字コードのリスト)であり、バージョン7では適切な文字列型でis_list("")あるという事実を使用します。


12

BF / SPL、5342バイト

これがこのサイトで最初のシェークスピアプログラミング言語の多言語であることは間違いありません。

おそらく賞品を獲得するつもりはありません。BFコードをアクト/シーン/プログラムのタイトルに忍び込ませることで機能します。SPLコードは、いくつかの場合を除き、ピリオドの代わりに感嘆符を使用します。プログラムは入力を受け取ることを想定していないので、文字宣言内のコンマは、セルをゼロにし、コンマを角括弧で囲むことによって「コメント化」されます。Enter / Exementステートメントを角括弧で非表示にする場合も、同じ手順が適用されます。

[-][.
Ford,.
Page,.
Act I:]+++++++++[>+++++++++<-]>+++.
Scene I:>[.
[Enter Ford and Page]
Ford:
You is sum of bad bad bad bad bad bad day and sum of bad bad bad bad day and bad bad day!Speak thy mind!
Scene II:]<<++[>++++++++++<-]>.
Page:
You is sum of bad bad bad bad bad bad day and sum of bad bad bad bad bad day and bad bad bad day!Speak thy mind!
Scene III:+.
Page:
You is sum of thyself and day!Speak thy mind!
Scene IV:++++++++++.
Page:
You is sum of thyself and sum of bad bad bad day and bad day!Speak thy mind!
Scene V:>++++[>++++++++<-]>.
Ford:
You is fat fat fat fat fat cat!Speak thy mind!
Scene VI:[-<+>]<<---.
Page:
You is sum of thyself and sum of big pig and pig!Speak thy mind!
Scene VII:++.
Page:
You is sum of thyself and fat cat!Speak thy mind!
Scene VIII:---.
Page:
You is sum of thyself and sum of big pig and pig!Speak thy mind!
Scene IX:--------.
Page:
You is sum of thyself and big big big pig!Speak thy mind!
Scene X:+++++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and sum of fat cat and cat!Speak thy mind!
Scene XI:<++++[->----<]>-.
Page:
You is sum of thyself and sum of big big big big pig and pig!Speak thy mind!
Scene XII:++++++++++++.
Page:
You is sum of thyself and sum of fat fat fat fat cat and big big pig!Speak thy mind!
Scene XIII:>.
Ford:
Speak thy mind!
Scene XIV:<++++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and fat cat!Speak thy mind!
Scene XV:<++++[->-----<]>--.
Page:
You is sum of thyself and sum of big big big big big pig and sum of fat fat fat cat and fat cat!Speak thy mind!
Scene XVI:<++++[>++++<-]>++.
Page:
You is sum of thyself and sum of fat fat fat fat cat and fat cat!Speak thy mind!
Scene XVII:-----.
Page:
You is sum of thyself and sum of big big pig and pig!Speak thy mind!
Scene XVIII:>+++++++.
Ford:
You is sum of thyself and sum of fat fat fat cat and pig!Speak thy mind!
Scene XIX:<++++++.
Page:
You is sum of thyself and sum of fat fat cat and fat cat!Speak thy mind!
Scene XX:>-------.
Ford:
You is sum of thyself and sum of big big big pig and cat!Speak thy mind!
Scene XXI:<+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene XXII:-----.
Page:
You is sum of thyself and sum of big big pig and pig!Speak thy mind!
Scene XXIII:---------.
Page:
You is sum of thyself and sum of big big big pig and pig!Speak thy mind!
Scene XXIV:+++++++++++.
Page:
You is sum of thyself and sum of cat and sum of fat cat and fat fat fat cat.Speak thy mind!Speak thy mind!
Scene XXV:<+++[>-----<-]>.
Page:
You is sum of thyself and sum of big big big big pig and cat!Speak thy mind!
Scene XXVI:+++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and cat!Speak thy mind!
Scene XXVII:>.
Ford:
Speak thy mind!
Scene XXVIII:<-----.
Page:
You is sum of thyself and sum of big big pig and pig!Speak thy mind!
Scene XXIX:+++++.
Page:
You is sum of thyself and sum of fat fat cat and cat!Speak thy mind!
Scene XXX:>.
Ford:
Speak thy mind!
Scene XXXI:[->++<]>++.
Page:
You is sum of thyself and sum of big big big big big pig and sum of fat fat cat and cat!Speak thy mind!You is sum of thyself and sum of big pig and pig!Speak thy mind!
Scene XXXII:++++.
Page:
You is sum of thyself and big red hog!Speak thy mind!
Scene XXXIII:<+++++[>-----<-]>-.
Page:
You is sum of thyself and big big big big big pig!Speak thy mind!
Scene XXXIV:[-<+>]<------------.
Ford:
Speak thy mind!
Scene XXXV:<-----.
Page:
You is sum of thyself and sum of fat fat fat fat fat fat cat and sum of big pig and pig!Speak thy mind!
Scene XXXVI:+++++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and sum of fat cat and cat!Speak thy mind!
Scene XXXVII:>.
Ford:
Speak thy mind!
Scene XXXVIII:<+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene XXXIX:<++++[->-----<]>--.
Page:
You is sum of thyself and sum of big big big big big pig and sum of fat fat fat cat and fat cat!Speak thy mind!
Scene XL:<++++[>++++<-]>++.
Page:
You is sum of thyself and sum of fat fat fat fat cat and fat cat!Speak thy mind!
Scene XLI:>.
Ford:
Speak thy mind!
Scene XLII:<<++++[>----<-]>-.
Page:
You is sum of thyself and sum of big big big big pig and pig!Speak thy mind!
Scene XLIII:<+++++[>++++<-]>-.
Page:
You is sum of thyself and sum of fat fat fat fat cat and sum of fat cat and cat!Speak thy mind!
Scene XLIV:------------.
Page:
You is sum of thyself and sum of big big big big pig and fat fat cat!Speak thy mind!
Scene XLV:+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene XLVI:++++++++.
Page:
You is sum of thyself and fat fat fat cat!Speak thy mind!
Scene XLVII:>.
Ford:
Speak thy mind!
Scene XLVIII:<--------------.
Page:
You is sum of thyself and sum of big big big big pig and fat cat!Speak thy mind!
Scene XLIX:+++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and cat!Speak thy mind!
Scene L:+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene LI:>.
Ford:
Speak thy mind!
Scene LII:>+++++++[<+++++++>-]<++.
Page:
You is sum of thyself and sum of big big big big big pig and big big big big pig!Speak thy mind!
Scene LIII:---.
Page:
You is sum of thyself and fat fat cat!Speak thy mind!
Scene LIV:----.
Ford:
You is sum of thyself and cat!Speak thy mind!
Scene LV:>+++++++[<------>-]<-.
Ford:
You is cat!
Scene LVI:>[.
[Exeunt]

https://repl.it/E8Hh/23で BFをテストします

SPLコードは、https//github.com/drsam94/Spl/にあるコンパイラでテストされました。


11

Ruby 1.8 / Ruby 1.9、87

puts"This program wasn't written in Ruby 1.#{?9%49}, it was built for Ruby 1.#{?8%47}!"

Ruby 1.8では?9、ASCII値 "9"は49を法とする8です。Ruby1.9では、文字列 "9"であり%49、 "9"には書式文字列がないため、何もしない書式設定操作です。それ。


11

Python 2.7.9 / Python 2.7.10、127バイト

マイナーバージョンを使用した投稿がいくつかありましたが、次のレベルに進んでいない投稿はありません...

import types
n=len(dir(types))
print"This program wasn't written in Python 2.7.%d, it was made for Python 2.7.%d!"%(n%33,-n%52)

Ideone(Python 2.7.10)とrepl.it(技術的にはPython 2.7.2ですが、2.7.9と同じ結果になるはずです)で試してください。

changelogによると、Python 2.7.10 :

追加されました__all__typesのモジュール。

これによりlen(dir(types))、42から43にプッシュされ、目的の出力を生成するために活用できる数値の違いが得られました。


10

Python / QBasic、160 142バイト

Python 3およびQBasic 1.1でテスト済み。from __future__ import print_function4行目に追加しないと、Python 2では機能しません。

1# DEFSTR A-B
a = "QBasic"
b = "Python"
'';a,b=b,a;PRINT=print
PRINT ("This program wasn't written in " + a + ", it was built for " + b + "!")
  • Pythonでは1#、式1(no-op)の後にコメントが続きます。QBasicでは、これは行番号です(タイプの接尾辞がそれをマークしますDOUBLE)。このDEFSTRステートメントは、名前がAor B(大文字と小文字を区別しない)で始まるすべての変数が文字列変数であることをQBasicに伝えます。そうすれば、aandのb代わりに変数を呼び出すことができます(Pythonでは機能しません)。a$b$
  • QBasicで'、コメントを開始します。Pythonでは''、空の文字列です(no-op)。次に、言語名を交換し、print関数のエイリアスを定義します(QBasicキーワードは大文字に自動フォーマットされるため)。
  • 最後の行の括弧はQBasicでは必要ありませんが、何も傷つけないでください。

オートフォーマッタ(QB64のオプションですが、元のQBasicにはありません)をオフにできる場合、Python 2を使用して114バイト減らすことができます。

1#DEFSTR A-B
a="QBasic"
b="Python"
'';a,b=b,a
print"This program wasn't written in "+a+", it was built for "+b+"!"

-3バイト:実際のQB64に切り替えます。
CalculatorFeline

自動フォーマット。
CalculatorFeline

QB64 / Python 2は131バイトです!または、133バイトのPython 3。
CalculatorFeline

9

Perl / Ruby、129バイト

0&&eval('def sort a,b;[b,a] end');printf"This program wasn't written in %s, it was built for %s!",(@a=sort"Perl","Ruby")[0],@a[1]

これでは、正規表現の乱用はありません。Rubyで0が真であるという事実evalsort(実際にreverses)とprintfing の定義に利用するだけです。Rubyは引数にリストを使用することを好まなかったため、それぞれを個別に行う必要がありました。


aローカル変数ではなく、インスタンス変数にする必要があるのはなぜですか?
ニックハートリー

@QPaysTaxesは@、Perlの変数のシギルがリストであることを示しており、Perlに格納すると、$a代わりに出力が得られません。
ドムヘイスティングス

ああ、分かった。説明ありがとう。
ニックハートリー

9

///およびRetina、95 + 3 = 98バイト

/
//

This program wasn't written in \/\/\/, it was built for Retina!
/?./....(.*)(R.*)!
$2$1///!

-sRetina のフラグ用に+3バイト。

///の説明

最初の命令は

/
//

残りのコードからすべての改行を削除し、結果として

This program wasn't written in \/\/\/, it was built for Retina!/?./....(.*)(R.*)!$2$1///!

ここまで!はすべてリテラルであり、STDOUTに出力されます。次の指示は

/?./....(.*)(R.*)!$2$1/

しかし、検索文字列?.が見つからないため、何も起こりません。次に、残りのコードは//!不完全な命令であるため、プログラムは終了し、正しい文字列が出力されます。

網膜の説明

/
//

これにより、Retinaはに置き換え/られ//ます。しかし、入力は空なので、これは何にも一致しません。

<empty>
This program wasn't written in \/\/\/, it was built for Retina!

これにより、入力が2行目の文字列に置き換えられます。

/?./....(.*)(R.*)!
$2$1///!

これは文字列に一致し、\/\/\/, it was built for Retina!それを置き換えてRetina, it was built for ///!正しい結果を提供します。


ご存知のように、Retinaとrsの間で1つを行うのは簡単だと思います...;)
kirbyfan64sos

@ kirbyfan64sosおそらく、それはどれくらい短いでしょうか?;)
マーティン・エンダー

さて、これまでのところ、約85バイト+ 3を取得しましたが-s、私がやったことを言っても楽しさは損なわれます!:D
kirbyfan64sos

1
@ kirbyfan64sosさあ、投稿してください。すぐにrsを調べる時間がないと思います。
マーティンエンダー

9

sed / Hexagony 251バイト

/$/cThis program wasn't written in sed, it was built for Hexagony!
#...>32;p;r;o;g;r;\+/;a;w;23+;m;a<.;.>s;n;+39;t;+32\s/;n;e;;t;i;r;w;<. |.>+32;i;n;+32;H;e\ ;/4+;y;n;o;g;a;x;< i>4;+32;i;t;+32;\;/u;b;23+;s;a;w<h>;i;l;t;+32;f\;/;s;23+;r;o;< T>e;d;+33;@

sed:オンラインでお試しください!
六角形:オンラインで試してみてください!


sedでは、末尾の空の文字列(常に)と一致する場合、正しい文字列を出力します。2行目はコメントです。これにはSTDINの文字列が必要ですが、空にすることもできます(このコンセンサスに基づいて許可されます)。

例:

echo '' | sed -f whatLanguage.sed

Hexagonyでは、最初/は左下にリダイレクトされ、sed部分の開始位置まで左側をたどり、左から右へ、行の下、右から左、行の下などにラップします。拡張されたヘックスは次のようになります。

         / $ / c T h i s p r 
        o g r a m w a s n ' t 
       w r i t t e n i n s e d 
      , i t w a s b u i l t f o 
     r H e x a g o n y ! # . . . 
    > 3 2 ; p ; r ; o ; g ; r ; \
   + / ; a ; w ; 2 3 + ; m ; a < .
  ; . > s ; n ; + 3 9 ; t ; + 3 2 \
 s / ; n ; e ; ; t ; i ; r ; w ; < . 
| . > + 3 2 ; i ; n ; + 3 2 ; H ; e \ 
 ; / 4 + ; y ; n ; o ; g ; a ; x ; < 
  i > 4 ; + 3 2 ; i ; t ; + 3 2 ; \
   ; / u ; b ; 2 3 + ; s ; a ; w <
    h > ; i ; l ; t ; + 3 2 ; f \
     ; / ; s ; 2 3 + ; r ; o ; < 
      T > e ; d ; @ . . . . . .
       . . . . . . . . . . . .
        . . . . . . . . . . .
         . . . . . . . . . .

私は... Hexagonyを理解することはありません
DJgamer98

@ DJgamer98私もそれを本当に理解していない。これを使用するのは初めてです。
ライリー

;現在のセルmod 256を使用してバイト値を決定するという事実を利用して、六角形を少し短くすることができます(たとえばP0;、現在のセル値に関係なくスペースを印刷できます)。このCJamスクリプトは、すべてのペアを生成します。cjam.tryitonline.net
Martin Ender

9

パイソン/網膜、133の 120 119 117 115バイト

Retinaと正規表現について詳しく知ったので、もう少しゴルフをしました。また、実際に動作するようになりました。

#?.*
print"This program wasn't written in Python, it was built for Retina!"
#?.*t"

#?(\w+)(,.* )(.+)!"
#$3$2$1!
#

Pythonはステートメントを出力するだけです。Retinaは、Pythonのprintステートメントですべてを置換し、print引用符と引用符を削除します。次に、を交換PythonRetinaて削除し#ます。

Pythonで試す | Retinaでお試しください



@ jimmy23013このチャレンジが投稿された時点では制限はありませんでした。これは、Retinaの比較的新しい機能です。
mbomb007


8

JavaScript / CoffeeScript、125 124バイト

console.log("This program wasn't written in",(a=['Coffee','Java'])[+(b=0=='0')]+"Script, it was built for",a[b^1]+"Script!")

CoffeeScriptでは、a==bにコンパイルされa===b、中間条件が偽になります。少しの魔法を使用して、ブール値を整数に変換しました。

@DomHastingsのおかげで1バイト節約されました!

125バイトバージョン:

console.log("This program wasn't written in",(a=['Coffee','Java'])[(b=0=='0')+0]+"Script, it was built for",a[b^1]+"Script!")

いいね!私はあなたが+(b=0=='0')代わりにバイトを保存できると思います+0
ドムヘイスティングス

代わりにb^1、私はあなたが使用できると思う~b
イスマエルミゲル

@IsmaelMiguelいいえ それはために建てられたと言いundefinedScriptます。
kirbyfan64sos

それを忘れました~1 == -2。しかし、(b=0=='0')+0と書くことができます+(b=0=='0')。またはb=+(0=='0')。これで1バイトが切り捨てられます。
イスマエルミゲル

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