假设您有2种语言,A
并且B
。如果满足以下条件,则字符串s
为准字符串:A
B
s
是语言的奎因A
。s
在一个多语种A
和B
。s
作为B
程序运行的输出是一个不同的字符串s'
,它是B
。
这项挑战的目标是用两种不同的语言编写一个半喹啉。这是代码高尔夫球,因此最短的代码获胜,最早的答案用作决胜局。
规则
仅接受真正的奎因。也就是说,您需要将整个源代码原样输出到STDOUT,而无需:
- 直接或间接阅读您的源代码。
- 依靠REPL环境,该环境仅评估并打印您提供给它的每个表达式。
- 依靠在某些情况下仅能打印出源代码的语言功能。
- 使用错误消息或STDERR编写全部或部分的藜。(您可以将内容写到STDERR或生成警告/非致命错误,只要STDOUT是有效的Quine,并且错误消息不属于其中即可。)
此外,您的源代码不能仅由文字(无论是字符串文字,数字文字等)和/或NOP组成。例如,`12
在Jelly和Pyth中是polyglot,但在Jelly中则是NOP和数字文字,因此无效。
为了有效,可以在输出中忽略任何不可抑制的输出(例如版权声明,启动/关闭消息或尾随换行符)。
多义规则
所使用的两种语言必须明显不同。特别是:
- 它们不能是同一语言的不同版本(例如,Python 2与Python 3)。
- 它们不能是同一语言的不同方言(例如Pascal与Delphi)。
- 一种语言可能不是另一种语言的子集(例如C vs. C ++ 1)。
- 一种语言可能不是另一种语言的琐碎派生词(例如Matlab与Octave 2,brainfuck与boolfuck,TinyBF,ShadyAsFuck与所有其他琐碎的Brainfuck派生词)。
杂项规则
- 您可能不接受来自STDIN(或任何其他来源)的输入。如果您选择的语言必须接受输入,则输入必须为空(空字符串,通过
/dev/null
等管道传输),或者程序的输出不得依赖于输入。 - 对于这个挑战,您必须编写一个完整的程序。不允许要求其他代码来运行解决方案(例如,分配和调用解决方案中定义的lambda函数)。
1:是的,我知道C并不是C ++的真正子集。但是,它足够接近以至于可以用于多重标记的目的,因此我将其归为这一挑战。
2:就像上面的第1点一样,尽管从技术上来说Octave与Matlab并非100%兼容,但它的设计是兼容的,并且足够接近以允许使用Matlab / Octave多重音色可以简化挑战。