問題
色付きのボールのシーケンス(赤R
と緑G
)が与えられます。そのような可能なシーケンスの1つは次のとおりです。
RGGGRRGGRGRRRGGGRGRRRG
できるだけ少ない動きで、各ボールが隣のボールとは異なる色になるように(つまり、シーケンスが交互になるように)する必要があります。
RGRGRGRGRGRGRGRGRGRGRG
「R」と「G」の等しい番号を持つ順序付けられていないシーケンス(この場合は文字列)を、アイテムが交互に並ぶシーケンスに変換できるプログラムを作成する必要があります。単純なアルゴリズムの場合のセッションの例を以下に示します(<
プログラム>
への入力、出力です。入力または出力にキャレットを含める必要はありません)。
< RGGGRRGGRGRRRGGGRGRRRG
> RGGRGRGGRGRRRGGGRGRRRG
> RGRGGRGGRGRRRGGGRGRRRG
> RGRGRGGGRGRRRGGGRGRRRG
> RGRGRGGRGGRRRGGGRGRRRG
> RGRGRGGRGRGRRGGGRGRRRG
> RGRGRGGRGRGRGRGRGGRRRG
> RGRGRGGRGRGRGRGRGRGRRG
> RGRGRGGRGRGRGRGRGRGRGR
> RGRGRGRGGRGRGRGRGRGRGR
> RGRGRGRGRGGRGRGRGRGRGR
> RGRGRGRGRGRGGRGRGRGRGR
> RGRGRGRGRGRGRGGRGRGRGR
> RGRGRGRGRGRGRGRGGRGRGR
> RGRGRGRGRGRGRGRGRGGRGR
> RGRGRGRGRGRGRGRGRGRGGR
> RGRGRGRGRGRGRGRGRGRGRG (15 moves)
別の可能性は、例えば、位置5と7の入れ替えを示すために「5,7」を出力することです。
最初に赤または緑のいずれかを配置できますが、一貫している必要はありません。各シーケンスは、他のすべてのシーケンスと同じ長さになります。
各移動で2文字だけを入れ替えることができます(それらは隣接している必要はありません)。
受賞基準
プログラムは、ソートプロセスの各ステップを示す必要があります。以下のすべての文字列の合計移動が最も少ないプログラムが勝利します。同点の場合は、最短のコードが優先されます。
入力文字列
次の文字列を使用してプログラムをテストします。
GGGGGGGGGGRRRRRRRRRR
GGRRGGRRGGRRGGRRGGRR
RRGGGGRRRRGGGGRRRRGG
GRRGRGGGGRRRGGGGRRRR
GRGGGRRRRGGGRGRRGGRR
RGRGRGRGRGRGRGRGRGRG
最後のシーケンスはゼロムーブになります。