サイクリックポリグロットチャレンジ
これは警官のスレッドです。ここで強盗スレッドを見つけることができます。
サイクリックポリグロット
N要素の巡回ポリグロットは、N個の異なる言語で実行できる完全なプログラムです。各言語で、プログラムが入力なしで実行される場合(この例外の影響を受ける可能性があります)、言語の名前をSTDOUTに出力する必要があります。具体的には、プログラムがK番目の言語で実行される場合、(K + 1)番目の言語の名前を出力する必要があります。プログラムがN番目の言語(つまり、N要素サイクルの最終言語)で実行される場合、最初の言語の名前を出力する必要があります。
例が役に立つかもしれません。
a = [[ v = 7, puts('Befunge') ]]
__END__
= print("Ruby")
-->*+:292*++,,@
--3 9
--7 *
--^,:-5<
Luaでこのプログラムを実行すると、文字列「Ruby」が出力されます。このプログラムをRubyで実行すると、文字列「Befunge」が出力されます。このプログラムをBefungeで実行すると、文字列「Lua」が出力され、サイクルが完了します。このプログラムは、Lua、Ruby、およびBefungeで構成される3サイクルを構成します。
同じ言語をサイクルで2回使用することはできません。また、同じ言語の異なるバージョン(Python 2とPython 3など)を同じサイクルで使用することはできません。
警官
課題は、Nが少なくとも2であるNサイクリックポリグロットを作成することです。その後、プログラムにいくつかの文字を追加、置換、削除して、Mサイクリックポリグロットを作成する必要があります。次に、短いNサイクリックポリグロット(およびそれが実行される言語)、および長いポリグロットを生成するために変更した文字数を投稿する必要があります。スコアはN(短いサイクルの言語の数)です。
強盗はあなたの長いサイクルを特定しようとします。7日後、誰もあなたのソリューションを正常にクラックできなかった場合、あなたはそれが安全であると宣言して答えを編集する必要があります。この時点で、より長いMサイクリックポリグロットも投稿する必要があります。
強盗
警官のNサイクリックポリグロットと、ポリグロットサイクルを大きくするために追加された文字数を考えると、目標はその大きなサイクルを作ることです。あなたは多くの文字を追加、削除、またはとして置き換えることにより、長いサイクルを作り出すことができる場合は警官が行ったように文字以下、あなたは警官のポリグロットを割っています。スコアは、作成した新しいサイクルの長さです。新しいポリグロットは、警官の秘密のポリグロットと同じである必要はありません。既存のものよりも大きくする必要があるだけです。
ソリューションもクラックされる可能性があります。別の強盗がやって来て、同じ警官のポリグロットから始まって、あなたよりも厳密に長いサイクルを生成すると、彼らはあなたのポイントを盗んだ。
有効なプログラミング言語
この課題は、他の参加者が使用するプログラミング言語を推測することを間接的に伴うため、この課題のためのプログラミング言語の定義は、通常の定義よりも少し厳密になります。この課題で使用されるプログラミング言語は、次のすべての条件を満たす必要があります。
- 言語はプログラミング言語に必要な通常のPPCGを満たさなければなりません。
- 言語には、このチャレンジが投稿された時点で、Wikipediaの記事、Esolangsの記事、またはRosetta Codeの記事が必要です。
- 言語には、自由に利用できるインタプリタまたはコンパイラが必要です。
最終ノート
- 記述するコードは、実行するすべての言語のスタンドアロンプログラムである必要があります。関数またはコードスニペットは許可されていません。
- プログラムには、STDINからの入力はありません。同様に、プログラムはSTDERRに何も出力しません。
- 警官のスコアは、彼らが投稿した多言語のサイクル内の言語の数です。警官は、投稿されたポリグロットが正しく実行される言語と、より長いポリグロットを生成するために追加された文字数を投稿する必要があります。彼らは、答えが安全になるまで、長い隠れた多言語が実行されるたびに言語を投稿する責任を負いません。
- 強盗のスコアは、変更されたポリグロットが実行される言語の数です。警官と同様に、強盗はポリグロットが正しく実行される言語のリストを投稿する必要があります。
- 変更された文字の数は、レーベンシュタイン距離で計算する必要があります。