2つの言語があるA
としB
ます。文字列s
はセミクインでA
ありB
、次の条件を満たす場合:
s
言語の羽毛ですA
。s
でポリグロットであるA
とB
。- 実行の出力
s
としてB
プログラムは、異なる列であるs'
クワインですB
。
この課題の目標は、2つの異なる言語でセミキンを書くことです。これはcode-golfなので、最も短いコードが優先され、最も早い回答がタイブレーカーとして使用されます。
クインのルール
本当のクインだけが受け入れられます。つまり、以下を使用せずに、ソースコード全体をそのままSTDOUTに出力する必要があります。
- 直接または間接的にソースコードを読み取る。
- フィードするすべての式を単に評価して出力するREPL環境に依存しています。
- 特定の場合にソースを出力するだけの言語機能に依存しています。
- エラーメッセージまたはSTDERRを使用して、クインのすべてまたは一部を書き込みます。(STDOUTが有効なクインであり、エラーメッセージがその一部ではない限り、何かをSTDERRに書き込んだり、警告/致命的でないエラーを生成したりできます。)
さらに、ソースコードはリテラル(文字列リテラル、数値リテラルなど)やNOPだけで構成されてはなりません。たとえば、`12
はJellyおよびPythのポリグロットですが、JellyではNOPおよび数値リテラルであるため、無効です。
抑制されない出力(著作権表示、起動/シャットダウンメッセージ、末尾の改行など)は、クインの有効性のために出力で無視される場合があります。
ポリグロットのルール
使用される2つの言語は明確に異なる必要があります。特に:
- 同じ言語の異なるバージョンであってはなりません(例:Python 2とPython 3)。
- それらは、同じ言語の異なる方言であってはなりません(例えば、PascalとDelphi)。
- 1つの言語が他の言語のサブセットではない場合があります(CとC ++ 1など)。
- 1つの言語は他の言語の自明な派生物ではない可能性があります(たとえば、Matlab vs. Octave 2、brainfuck vs boolfuck vs TinyBF vs ShadyAsFuck vs他のすべての自明な脳ファック派生物)。
その他の規則
- STDIN(またはその他のソース)からの入力を受け入れることはできません。選択した言語が場合しなければならない入力を取り、その後、入力のいずれかが空でなければなりません(空の文字列から、パイプ
/dev/null
など)、またはプログラムの出力は、入力に依存してはなりません。 - この課題では、完全なプログラムを作成する必要があります。ソリューションを実行するために追加のコードを要求することは許可されていません(ソリューションで定義されたラムダ関数の割り当てや呼び出しなど)。
1:はい、Cは実際にはC ++のサブセットではないことを知っています。それは多声の目的のために1つと見なされるのに十分に近いので、私はこの挑戦のためにそれを数えています。
2:上記のポイント1と同様に、Octaveは技術的にはMatlabと100%互換性がありませんが、互換性があるように設計されており、Matlab / Octaveのポリグロットを許可すると問題が簡単になります。