Masalah
Anda diberi urutan bola berwarna (merah Rdan hijau G). Salah satu urutan yang mungkin adalah:
RGGGRRGGRGRRRGGGRGRRRG
Dalam gerakan sesedikit mungkin, Anda harus membuatnya sehingga setiap bola memiliki warna yang berbeda dengan tetangganya (yaitu urutan bergantian.)
RGRGRGRGRGRGRGRGRGRGRG
Anda harus menulis sebuah program yang dapat mengubah urutan yang tidak berurutan (dalam hal ini string) dengan jumlah "R" dan "G" yang sama menjadi urutan di mana item berganti. Satu contoh sesi di bawah ini, untuk algoritma naif ( <adalah input ke program, >adalah output. Tidak perlu untuk memasukkan tanda sisipan pada input atau output.)
< RGGGRRGGRGRRRGGGRGRRRG
> RGGRGRGGRGRRRGGGRGRRRG
> RGRGGRGGRGRRRGGGRGRRRG
> RGRGRGGGRGRRRGGGRGRRRG
> RGRGRGGRGGRRRGGGRGRRRG
> RGRGRGGRGRGRRGGGRGRRRG
> RGRGRGGRGRGRGRGRGGRRRG
> RGRGRGGRGRGRGRGRGRGRRG
> RGRGRGGRGRGRGRGRGRGRGR
> RGRGRGRGGRGRGRGRGRGRGR
> RGRGRGRGRGGRGRGRGRGRGR
> RGRGRGRGRGRGGRGRGRGRGR
> RGRGRGRGRGRGRGGRGRGRGR
> RGRGRGRGRGRGRGRGGRGRGR
> RGRGRGRGRGRGRGRGRGGRGR
> RGRGRGRGRGRGRGRGRGRGGR
> RGRGRGRGRGRGRGRGRGRGRG (15 moves)
Kemungkinan lain adalah mengeluarkan "5,7" misalnya untuk menunjukkan pertukaran posisi 5 dan 7.
Anda mungkin posisi baik merah atau hijau pertama, dan Anda tidak harus konsisten. Setiap urutan akan memiliki panjang yang sama dengan setiap urutan lainnya.
Anda hanya dapat menukar dua huruf apa pun di setiap gerakan (tidak perlu berdekatan).
Kriteria Menang
Program harus menunjukkan setiap langkah dari proses sortir. Program yang membuat total gerakan paling sedikit untuk semua string di bawah ini, menang. Jika ada seri, kode terpendek akan menang.
Input String
String berikut akan digunakan untuk menguji program:
GGGGGGGGGGRRRRRRRRRR
GGRRGGRRGGRRGGRRGGRR
RRGGGGRRRRGGGGRRRRGG
GRRGRGGGGRRRGGGGRRRR
GRGGGRRRRGGGRGRRGGRR
RGRGRGRGRGRGRGRGRGRG
Urutan terakhir harus menghasilkan nol gerakan.