Problem
Sie erhalten eine Folge von farbigen Kugeln (rot Rund grün G). Eine solche mögliche Sequenz ist:
RGGGRRGGRGRRRGGGRGRRRG
In so wenigen Zügen wie möglich müssen Sie es so machen, dass jeder Ball eine andere Farbe als seine Nachbarn hat (dh die Reihenfolge wechselt).
RGRGRGRGRGRGRGRGRGRGRG
Sie sollten ein Programm schreiben, das eine ungeordnete Sequenz (in diesem Fall eine Zeichenfolge) mit der gleichen Anzahl von "R" und "G" in eine Sequenz konvertieren kann, in der sich die Elemente abwechseln. Im Folgenden finden Sie eine Beispielsitzung für einen naiven Algorithmus ( <wird in das Programm eingegeben, >wird ausgegeben. Es ist nicht erforderlich, die Carets in die Eingabe oder Ausgabe aufzunehmen.)
< RGGGRRGGRGRRRGGGRGRRRG
> RGGRGRGGRGRRRGGGRGRRRG
> RGRGGRGGRGRRRGGGRGRRRG
> RGRGRGGGRGRRRGGGRGRRRG
> RGRGRGGRGGRRRGGGRGRRRG
> RGRGRGGRGRGRRGGGRGRRRG
> RGRGRGGRGRGRGRGRGGRRRG
> RGRGRGGRGRGRGRGRGRGRRG
> RGRGRGGRGRGRGRGRGRGRGR
> RGRGRGRGGRGRGRGRGRGRGR
> RGRGRGRGRGGRGRGRGRGRGR
> RGRGRGRGRGRGGRGRGRGRGR
> RGRGRGRGRGRGRGGRGRGRGR
> RGRGRGRGRGRGRGRGGRGRGR
> RGRGRGRGRGRGRGRGRGGRGR
> RGRGRGRGRGRGRGRGRGRGGR
> RGRGRGRGRGRGRGRGRGRGRG (15 moves)
Eine andere Möglichkeit ist die Ausgabe von "5,7", um beispielsweise das Vertauschen der Positionen 5 und 7 anzuzeigen.
Sie können zuerst entweder Rot oder Grün positionieren und müssen nicht konsistent sein. Jede Sequenz hat die gleiche Länge wie jede andere Sequenz.
Sie dürfen in jedem Zug nur zwei beliebige Buchstaben tauschen (sie müssen nicht nebeneinander liegen.)
Gewinnkriterien
Das Programm muss jeden Schritt des Sortiervorgangs anzeigen. Das Programm, das für alle unten aufgeführten Zeichenfolgen die wenigsten Gesamtbewegungen ausführt, gewinnt. Bei einem Unentschieden gewinnt der kürzeste Code.
Eingabezeichenfolgen
Die folgenden Zeichenfolgen werden zum Testen der Programme verwendet:
GGGGGGGGGGRRRRRRRRRR
GGRRGGRRGGRRGGRRGGRR
RRGGGGRRRRGGGGRRRRGG
GRRGRGGGGRRRGGGGRRRR
GRGGGRRRRGGGRGRRGGRR
RGRGRGRGRGRGRGRGRGRG
Die letzte Sequenz sollte zu Nullbewegungen führen.