日本や東アジアの文化に触れたことがあるなら、あみだくじゲームにきっと出会うことでしょう。
以下のようウィキペディアは説明して、それが紙の上に描かれた宝くじの一種であり、ランダムにN項目の順列を選択するために使用しました。
たとえば、N人に開始シーケンスをランダムに割り当てたり、N人にN賞をランダムに割り当てたりするために使用できます。
ゲームが順列を表す理由を理解するコツは、すべての水平ストローク(「レッグ」と呼ばれる)が2つのアイテムを所定の位置で交換することを認識することです。
同じWikipediaのページでも、N個の項目の順列Pはそれぞれ無数のアミダクジ図に対応していると説明されています。水平ストローク(脚)の数が最も少ないものは、その特定の順列Pの「素数」と呼ばれます。
あなたの仕事は、2つ以上の縦線(この例では6)のアミダクジ図を次の形式(文字を除く)で受け取ることです。
A B C D E F
| | | | | |
|-| |-| |-|
| |-| |-| |
| | | | |-|
| |-| |-| |
| | |-| |-|
| | |-| | |
|-| | |-| |
|-| |-| | |
| |-| | |-|
| | | | | |
B C A D F E
そして、その素数の1つを生成します(これも、文字を差し引いたものです)。
A B C D E F
| | | | | |
|-| | | |-|
| |-| | | |
| | | | | |
B C A D F E
文字を含む最初と最後の行は、フォーマットの一部ではありません。順列を示すためにここに追加しました。また、されていない最初または最後の行は全く足を含まないことが必要で|-|、でも出力はできるだけコンパクトであること。
この特定の入力例は、Wikipediaページの上部にあるアミダクジ図の(無限)ASCII表現の1つです。
これらのASCIIダイアグラムには明白でないルールが1つあります。隣接するレッグは禁止されています。
|-|-| <- NO, this does not represent a single swap!
ウィキペディアは、「バブライゼーション」と呼ばれる図から素数を取得するための標準的な手順を説明しています。
1)右フォークから左フォーク:
| |-| |-| |
|-| | -> | |-|
| |-| |-| |
2)ダブルスの除去:
|-| | |
|-| -> | |
その説明が明確かどうかはわかりません。コードは、必要な素数を生成するその手法またはその他のアルゴリズムを使用する場合があります。
最短のコードが勝ちます。
標準規則と標準手当が適用されます。(入力が有効でない場合、プログラムが発火する可能性があります。入出力形式は、stdin / stdout、文字列引数、行のリスト、charの行列、最適なものなどです。)

