Urutan bergerak adalah urutan gerakan (bergantian) pada Rubik's Cube (untuk notasi lihat di bawah). Di samping urutan langkah kosong, ada banyak urutan langkah lainnya, yang tidak memiliki efek pada kubus sama sekali. Kami menyebutnya urutan identitas urutan ini.
Beberapa urutan identitas ini jelas untuk ditentukan, disukai U2 R R' U2
atau U D2 U' D2
. Dalam yang pertama, dua gerakan acak dilakukan U2 R
dan setelah itu segera dibatalkan R' U2
. Yang kedua mirip. Dua gerakan acak pertama U D2
dan setelah itu dibatalkan, tetapi dalam urutan terbalik U' D2
. Ini hanya berfungsi, karena bergerak U
hanya mempengaruhi potongan-potongan lapisan atas dan bergerak D2
hanya efek potongan-potongan lapisan bawah. Anda dapat melihat visualisasi dari dua urutan langkah ini.
Urutan identitas lainnya mungkin tidak jelas sama sekali. Misalnya urutannya R' U' R' F' U F U' R' F R F' U' R U2 R
. Cukup panjang, tetapi juga tidak memiliki efek sama sekali pada kubus.
Pindahkan Notasi
Sebuah langkah menggambarkan pergantian satu lapisan dari satu dari enam permukaan kubus. Pindah terdiri dari satu huruf yang mewakili wajah diikuti oleh akhiran opsional yang mewakili sudut belokan.
Huruf dan wajahnya yang sesuai adalah U (Atas - sisi menghadap ke atas), D (Bawah - sisi menghadap ke bawah), R (Kanan - sisi menghadap ke kanan), L (Kiri - sisi menghadap ke kiri) , F (Depan - sisi menghadap Anda) dan B (Belakang - sisi menghadap jauh dari Anda).
Jika tidak ada sufiks, wajah diputar 90 derajat searah jarum jam, sufiks '
berarti, wajah berubah 90 derajat berlawanan arah jarum jam, dan sufiks 2
berarti, wajah diputar 180 derajat searah jarum jam.
Jika Anda memiliki masalah dengan notasi, cukup gunakan http://alg.cubing.net , di mana Anda dapat memvisualisasikan urutan langkah tersebut.
Tantangan
Tugas Anda adalah menulis sebuah program, yang menentukan apakah urutan langkah adalah identitas atau bukan.
Anda dapat menulis program atau fungsi lengkap. Ini harus menerima string yang berisi urutan bergerak (bergerak terpisah oleh spasi) sebagai input (melalui STDIN, argumen baris perintah, argumen cepat atau fungsi), dan output (melalui nilai balik atau STDOUT) nilai Boolean atau bilangan bulat yang sesuai ( Benar - 1 - urutan identitas / Salah - 0 - bukan urutan identitas).
Jika akhiran Anda '
menciptakan masalah dalam bahasa pemrograman Anda, Anda dapat menggunakan simbol yang berbeda, tetapi tidak pada digit. R F2 U3
tidak diizinkan.
Ini codegolf, karena itu kode terpendek (dalam byte) menang.
Uji Kasus
"" -> True
"U2 R R' U2" -> True
"U D2 U' D2" -> True
"U2 R U2 R'" -> False
"R' U' R' F' U F U' R' F R F' U' R U2 R" -> True
"L'" -> False
"B B2 B' B2" -> True
"D D2 D'" -> False
"R F' D2 U B' F2 B' U2 D2 F2 B2 U F R'" -> True
"D2 U' R2 U F2 D2 U' R2 U' B' L2 R' B' D2 U B2 L' D' R2" -> False
"R U R' U' R' F R2 U' R' U' R U R' F' R2 U R2 U' R2 U' D R2 U' R2 U R2 D'" -> True
"R U R' U' R' F R2 U' R' U' R U R' F' R2 U' R2 U R2 U' D R2 U' R2 U R2 D'" -> False
"B2 F2 U' F2 U R2 F2 U2 B D' R' D' R2 D' F2 U' F U R2 U R B D B D2 L2 D' F2 U D' R' D B R2 D2 F2 R' F2 D2" -> True
"R U2 R' U R' U2 R U2 R U R' U' R' U R U2" -> False
"U F B' R' U F' R U' F' B L U' F L'" -> False
"R2 U' R' U' R U R U R U' R" -> False
"R' F R' B2 R F' R' B2 R2" -> False
U3
, maka Anda bisa memasukkan sufiks ke angka.
R2 D2
.
That is F(orward), B(ackward), L(eft), R(ight), U(p), D(own)
R F2 U3
?