我不是您要查找的语言!


181

当您找到一段代码并且不知道该语言是用什么语言编写时,这会很烦吗?这个挑战试图在某种程度上解决这个问题。

挑战

您将必须编写一个程序,当以两种不同的语言运行时,该程序将输出字符串:

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均不应有输出。

  • 您可以使用两种语言的注释。

  • 相同语言的两种不同版本计为不同语言。

    • 如果这样做,程序应输出主要版本号,并且如果在两个不同的次要版本上运行,则还应报告次要版本。

    • 您不应该使用预构建的版本函数(这包括在运行时已经评估过的变量)。

输出示例:

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:

  • 蟒蛇: 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
“同一语言的两个不同版本计为不同语言。” 因此,使用C前后99条注释进行欺骗是有效的吗?容易^^
Zaibis

1
加上它,感觉很矛盾,但符合您的规则。
Zaibis 2015年

1
没有人在做空白/ Python多语种吗?
并非查尔斯(Charles)

没关系。看到了23实施
不是查尔斯

依靠要运行具有特定解释​​程序的程序,是否算作输入?也就是说,开启argv[0]

Answers:


86

Foo / CJam,70个字节

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

正如许多人所发现的那样,在Foo中,它仅将双引号中的所有内容打印出来,并忽略大多数其他字符,或者执行在大多数情况下不影响输出的操作。简而言之,\@什么也不做,字符串全部照原样打印。

在CJam中,\交换前两个项目,并将@第三个项目移到顶部,这将字符串按正确的顺序排列。程序结束后,将自动打印堆栈中剩余的所有内容。


7
只是为了好玩,Fission / CJam还有一个类似的75字节解决方案:R"This program wasn't written in ""Fission"", it was built for ""CJam"\@'!O
Martin Ender

3
真好 我有"This program wasn't written in Clip, it was built for CJam!"3{4-_36+e\}/剪辑/果酱。
丹尼斯

5
我进入这个线程来发布Foo解决方案,应该已经意识到每个人现在都知道编写Foo多语言是多么容易。
histocrat

是否有Foo编程语言规范的链接?
2015年

1
@ErikE添加了一些解释。
jimmy23013 2015年

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);
}

小描述:

以前的C99的C版本只有这样的多行注释:

/*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_HongKong独立

4
@ace我相信这依赖于C99风格的注释。在第四行,注意//**/。在C89中,这是除法运算符,后跟一个空注释。在C99中,//开始单行注释,因此该行的其余部分为空白。因此,在C89,它成为(90-(-4.5/-4.5)),这是89,而在C99,它成为(90-(-4.5-4.5)),其是99.
kirbyfan64sos

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 2016年

@EMBLEM我的测试是在OS X内置的Ruby 2.0上进行的,我没有进行任何测试,但是我肯定会添加一条注释,指出它可能在其他版本中被破坏!
Dom Hastings

在Ruby的最新版本中,方法定义将方法的名称作为符号eval返回,因此您正在返回:log。我想你可以通过把修复;cend。该=~/ = ~诀窍是伟大的,但!
约旦

您也可以保存。通过使用$><<s而不是puts s和使用双引号来占用几个字节,这样您就可以在中添加反斜杠wasn\'t
约旦

@乔丹谢谢!不知道我怎么没发现删除\'双引号,这$><<意味着我可以应用您提到的修复程序并保持相同的字节数!
Dom Hastings

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
沙盒中谈到了这一问题,共识是允许这种事情
Blue

14
@flawr是否允许使用Python和Cobra?;)
Beta Decay's

7
@flawr Python实际上是以喜剧​​~~ group ~~众神Monty Python的名字命名的。
Mutantoe

@Mutantoe在您看来,“ Monty”不是动物的名字,双关语不起作用。
皮埃尔·阿洛德

57

钓鱼 / > <> 233217字节

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.

您可以通过在第三行的空白处放置> <>的打印循环,将代码减少13个字节(我不认为这会干扰钓鱼的部分,尽管我不知道该语言)。我不确定此注释将如何处理整个代码,所以这里有一个hastebin链接:hastebin.com/quqinozizi(我可能已经弄乱了第三行的间距,但我认为一切都正确对齐了)。
cole 2015年

@科尔它的工作。实际上,您的建议实际上删除了16个字符。
TheNumberOne

14
鱼类和捕鱼杂语……可能是同类中的第一例!
马克·科文

这真是太好笑了!
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个代码,请将其粘贴到Source区域中,按Enter插入尾随换行符,23Console区域中键入(从默认的23.dezsy表示法切换为自动检测),然后单击Run Interpreter!


20
杜德(Dude),看来您的代码中炸弹爆炸了!
D.Tate

8
O_0你是怎么写Malbolge代码
帕维尔

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 shebang。否则,将另一种语言的注释包装在其自己的注释中。

要剃除字节,我依赖隐式行为,该隐式行为仅在GCC和Clang中发出警告:int的隐式声明用于printf的主定义和隐式定义。


3
做得很巧妙!
牛嘎嘎声

2
如果删除“ include <stdio.h>”过于极端,我将回复答案。
benpop

2
为什么不在//C部分中使用注释?节省2个字节。
BrainStone

54

JavaScript / Haskell, 158字节 147个字节

一般想法:将每个人的注释语法潜入另一个。

一行:

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 2016年

51

Brainfuck / Foo,769个字节

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

一个极其复杂和复杂的答案。


21
该死,不是你了Foo:D
Beta Decay

5
我喜欢你的想法。
皮埃尔·阿洛德

13
在Brainfuck中运行此命令时,Brainfuck将由于,最后的文本而等待输入。我认为这违反了分配规则。
西蒙·佛斯伯格

1
@SimonForsberg很久了,但是在像在线解释器这样的解释器中,我认为大多数人都,将EOF设置为0
Destructible Lemon

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
如果打印不正确,它将显示什么?
Beta Decay

4
嵌套的printf东西很棒……
immibis

4
这是无效的C。Clang def:after 抱怨def main(),您实际上没有为main打开一个函数体。您是否真的尝试过用C编译答案?
C0deH4cker

5
该行#define def main(){0?丢失

3
#define return让我哭了一点……
corsiKa 2015年

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);
}

添加换行符以进行格式化。在CC ++中尝试。


32
如果我在int为2个字节的平台上怎么办?在哪里可以获得C +编译器?
immibis 2015年

@immibis haha​​:P,但请注意,空结构技巧可能会起作用:struct{}s;z=2*sizeof s
grc 2015年

31

Befunge / > <> 141个 138 134 133 130字节

3个字节保存感谢@Cole

确切地说,我正在使用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中的char

除非您需要Befunge代码(我认为您不需要这样做),否则可以通过将最下面的行替换为?!;>ol
cole

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 2015年

1
您应该能够摆脱第二行的括号,少了两个字节:SELECT"This program wasn't written in MySQL, it was built for PHP!";
msh210

2
但这将不再在PHP中起作用-它将导致解析错误。SELECT“ ...”不是有效的PHP表达式。
拉兹万

22

蟒3 / > <> 177 173 172 167个字节

感谢@mathmandan削减了5个字节!

好吧,这是一种体验,也是一种尝试。任何高尔夫建议都欢迎,因为这很长。我尽力重用文本,但这非常困难。

从技术上讲,该程序应该输出的是Python 3(如果我不符合规范,可以更改它-但在示例Python中列出了Python / C输出)。

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 \中,当在字符串中使用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)

因此,打印语句的计算结果为

"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行:

请注意,/由于指针从第1 行开始的位置,第2行开始于,并从右向左移动。

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

那应该是解释了。让我知道说明/代码之间是否存在不一致或是否做错了任何事情;在编写说明的过程中,我进一步研究了代码,因此我可能会混用旧的和新的代码。


如果我说您必须添加3是错误的,因为它不是python2。这很好。
蓝色

如果这仅是Python,我相信您可以替换aa[:-2][::-1]aa[-3::-1]。当然,在这种情况下,这可能会干扰> <>格式,但是如果您还没有考虑,也许值得考虑。特别是,我敢肯定您v在上一行的下方需要一个空格,但是看起来print(aa[-3::-1]+"Pytho"可以容纳下面的24个字符a=", it was built for "+,然后可以在其后放置一个空格+"n"+a)。我不确定这是否会破坏其他内容,但是如果可以,它将节省一些字节。
mathmandan

@mathmandan好主意,我将更新我的代码并感谢您。
2015年

不错的工作!仅供参考,我认为这在Python 2中可以正常工作,在Python 2中,您可以通过在print语句中加上括号来节省一个字节print aa[-3::-1]+"Pytho" +"n"+a。但是还有另一个问题:在> <>版本中,1最初被推到堆栈上的会发生什么?
mathmandan

@mathmandan我认为,如果我使用的解释器无效,则不会打印该字符,或者打印的字符根本不会显示。老实说,我不确定100%为什么打印该字符无关紧要;我偶然发现的。
科尔2015年

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 ERRORLEVELSET命令中设置on ,而BAT不ERRORLEVEL设置,这意味着此处格式错误的md命令设置SET v=1在一个版本中被清除,而在另一个版本中被清除。该脚本基于该新闻组线程中“ Ritchie”提供的示例。

请注意,上面的缩短脚本假定ENABLEEXTENSIONS已设置ON(默认情况下在每个平台上都可以)。下面的展开脚本明确设置了该脚本,以确保功能正确。SET否则,用于CMD 的命令将不允许所有扩展,并且(可能在某些系统上)可能无法正确设置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之间有区别吗?
Stan Strum,


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!";

Dunno是否在作弊,因为据我所知,不带开放<?标签的唯一运行PHP的方式是php -r $(cat codefile.php)。但是假设这是合法的... //是PHP注释,但在Perl中是正则表达式(就其本身而言,它不执行任何操作)。其余的应该是不言自明的。

编辑:现在在仅Perl的部分中使用一个裸词。我想首先将两种语言都使用它们,但是PHP这样做时会显示警告,这与“应该没有输出到stderr”相反。


1
<?'>#';是两种语言的有效语法。
primo

14

Ruby / Python,105个字符

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

这真的很好!我特别喜欢没有评论。
styfle

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多个字节,如果我不使用变量b更多

编辑:通过计算7+a8-a,淘汰了6个字节,a=1如果是否定义了reduce(JS 1.8)和a=0未定义(JS 1.7)

编辑: Hedi打了另外6个字节,建议使用模板字符串

编辑: ETHproductions打出2字节建议a=!![].reduce;而不是a=[].reduce?1:0;

编辑: no1xsyzy打高尔夫球了一个多字节,建议反转布尔检查


使用“ JS”而不是“ JavaScript”,使用两次“ JS 1”。在您的字符串中比使用变量b短。
Hedi

您可以使用模板字符串使其更短:“此程序不是用JS 1。$ {7 + a}编写的,它是为JS 1。$ {8 + a}编写的!”
Hedi,2016年

2
认为您可以将更改为,a=[].reduce?1:0;以节省两个字节a=!![].reduce;
ETHproductions's

@ETHproductions谢谢,但是我认为这行不通。我需要a持有的价值1或者0,不truefalse
马里奥特鲁科

@ETHproductions抱歉,您是对的,我试过了并且可以。谢谢!
Mario Trucco

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("")事实,因此在版本7中为false,在较早版本中为true。


12

BF / SPL,5342字节

我很确定这是该站点上的第一个莎士比亚编程语言多语言。

可能不会赢得任何奖品。通过将BF代码潜入act / scene / program标题中来工作。除少数情况外,SPL代码使用感叹号代替句点。程序不应该接受输入,因此通过将单元格清零并将逗号放在方括号内来“注释掉”字符声明中的逗号。当在回车/执行语句周围隐藏方括号时,将应用相同的过程。

[-][.
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”,它是8模49。在Ruby 1.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相同的结果)上尝试。

Python 2.7.10,根据更改日志

__all__types模块中添加了一个。

len(dir(types))从42 推到了43,给了数值上的差异,我们可以利用它来产生所需的输出。


10

蟒/ QBasic中,160个 142字节

经过Python 3QBasic 1.1的测试。如果不添加from __future__ import print_function第4行,将无法在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语句告诉QBasic,所有名称以A或开头B(不区分大小写)的变量都是字符串变量。这样,我们可以调用变量ab而不是a$and b$(在Python中不起作用)。
  • 在QBasic中,'开始发表评论。在Python中,''是空字符串(无操作)。然后,我们交换语言名称并为该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]

在这一代码中没有使用正则表达式,只是充分利用了事实(在s中)和ing eval定义了Ruby中0是真实的事实。Ruby不喜欢使用列表作为参数,因此我必须单独做每个。sortreverseprintf


为什么a必须是实例变量,而不是局部变量?
Nic Hartley

@QPaysTax @在Perl中的变量上标记符号表示它是一个列表,在Perl中存储,例如$a,不产生任何输出。
Dom Hastings 2015年

知道了 感谢您的解释。
Nic Hartley 2015年

9

///Retina,95 + 3 = 98字节

/
//

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

-s视网膜中的标志+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!

这会将输入替换为第二行中的字符串。

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

这将匹配字符串\/\/\/, it was built for Retina!并将其替换Retina, it was built for ///!为正确的结果。


您知道,我认为在Retina和rs之间做一件事是微不足道的;;)
kirbyfan64sos 2015年

@ kirbyfan64sos大概吧,但是要多短?;)
Martin Ender 2015年

好吧,到目前为止,我已经获得了85个字节+ 3个字节-s,尽管说我所做的会破坏乐趣!:D
kirbyfan64sos 2015年

1
@ kirbyfan64sos继续并发布它,我认为我没有时间尽快查看rs。
马丁·恩德

9

sed / 六角形 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中,如果匹配末尾的空字符串(始终),它将打印正确的字符串。第二行是评论。这确实需要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 ; @ . . . . . .
       . . . . . . . . . . . .
        . . . . . . . . . . .
         . . . . . . . . . .

我永远不会理解六边形...
DJgamer98

@ DJgamer98我也不是很了解。这是我第一次使用它。
莱利

您可以利用;当前单元格mod 256确定字节值的事实来稍微缩短Hexagony (例如,P0;无论当前单元格值如何,您都可以打印一个空格)。这CJam脚本生成所有的对:cjam.tryitonline.net/...
马丁安德

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和引号。于是,我换PythonRetina并去除#

在Python中尝试 | 试试视网膜



@ jimmy23013发布此挑战时不存在限制。这是Retina的一个相对较新的功能。
mbomb007 '16


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,使中间条件为false。我使用了一些魔术手段将布尔值转换为整数。

感谢@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
Dom Hastings 2015年

相反b^1,我认为您可以使用~b
Ismael Miguel

@IsmaelMiguel不行。它说它是为undefinedScript
kirbyfan64sos

我忘记了~1 == -2。但是(b=0=='0')+0可以写成+(b=0=='0')。或者b=+(0=='0')。那应该剪掉1个字节。
Ismael Miguel

@IsmaelMiguel我已经在最新版本中做到了……
kirbyfan64sos 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.