Kami dapat mewakili Rubik's Cube sebagai jaring sebagai berikut (ketika dipecahkan):
WWW
WWW
WWW
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
YYY
YYY
YYY
Setiap huruf mewakili warna yang sesuai ( W
putih, G
hijau dll.)
Telah ditunjukkan bahwa ada (~ quintillion) permutasi yang berbeda yang dimiliki oleh Rubik's Cube.
Tugas Anda adalah mengambil bilangan bulat antara dan dan output yang sesuai permutasi, dengan cara yang ditunjukkan di atas. Anda dapat memilih bagaimana permutasi disusun, tetapi algoritma yang Anda gunakan harus ditunjukkan untuk menghasilkan permutasi yang unik, dan benar, untuk setiap input yang mungkin.
Aturan permutasi tidak valid
Diambil dari halaman ini
Untuk memulainya, pusat dari setiap wajah 3x3 harus tetap sama, karena alun-alun di Rubik's Cube tidak dapat diputar. Seluruh kubus dapat diputar, mengubah di mana wajah muncul, tetapi ini tidak mempengaruhi jaring kubus.
Jika kita mengatakan setiap permutasi memiliki paritas, berdasarkan paritas jumlah swap untuk mencapai permutasi itu, kita dapat mengatakan
Setiap potongan sudut memiliki tiga kemungkinan orientasi. Ia dapat diorientasikan dengan benar (0), searah jarum jam (1) atau berlawanan arah jarum jam (2). Jumlah orientasi sudut selalu tetap habis dibagi 3
Setiap rotasi legal pada Rubik's Cube selalu membalik jumlah tepi yang genap sehingga tidak mungkin hanya ada satu bagian yang salah.
Mempertimbangkan permutasi dari semua sudut dan tepi, paritas keseluruhan harus genap yang berarti bahwa setiap langkah hukum selalu melakukan yang setara dengan jumlah swap yang genap (mengabaikan orientasi)
Misalnya, tiga jaring berikut ini adalah keluaran yang tidak valid:
WWW
WWW
WWW
GGGWWWBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
YYY
YYY
YYY
(Too many whites/not enough reds)
WRW
WRW
WRW
GGGRWRBBBOOO
GGGWRRBBBOOO
YYGRWROOOBBB
YYY
GGY
YYY
(There are two red/green center squares and no white/yellow center squares.
In all valid permutations, the center squares are all different colours)
WWW
WWW
WWW
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBOYOO
YYY
YYY
YYB
(The yellow/orange/blue corner is rotated into an impossible permutation)
Aturan
- Anda harus membuktikan, bagaimanapun keinginan Anda, bahwa algoritma tersebut valid. Anda tidak perlu menghitung setiap permutasi tunggal, selama Anda membuktikan validitas algoritma Anda.
- , tetapi algoritma yang Anda gunakan seharusnya tidak.
- Anda harus memasukkan semacam bukti validitas dalam jawaban Anda. Bukti ini dapat membuktikan validitas dalam metode bukti yang diterima, kecuali untuk menyebutkan semua kemungkinan.
- Anda dapat memilih untuk menggunakan metode input alternatif jika diinginkan, asalkan:
- Input dibatasi
- Setiap input sesuai dengan output unik
- Anda dengan jelas menjelaskan format input dan bagaimana itu sesuai dengan setiap output
- Anda dapat mengubah karakter yang digunakan untuk menggunakan 6 karakter ASCII yang berbeda, antara 33 (
!
) dan 126 (~
), alih-alihWGRBOY
- Anda dapat menampilkan dengan cara apa pun yang Anda inginkan, asalkan itu membentuk representasi yang jelas dari sebuah kubus di mana semua 6 wajah dapat ditampilkan, termasuk jaring kubus yang valid, string berjajar tunggal atau rendering 3D. Jika Anda tidak yakin tentang format tertentu, jangan ragu untuk bertanya di komentar.
Ini adalah kode-golf sehingga kode terpendek, dalam byte, dalam setiap bahasa menang.
Contoh output yang valid
YYY
YYY
YYY
GGGRRRBBBOOO
GGGRRRBBBOOO
GGGRRRBBBOOO
WWW
WWW
WWW
(The `W` and `Y` faces have been swapped)
ZZZ
+++
+}}
+[[}77ZZ7bbb
bb[}[[7}}+Z7
bb[}++[}}+Z7
7bb
[7Z
[7Z
(To start with, the colours have been mapped W -> +, G -> b, R -> [, B -> }, O -> Z and Y -> 7.
Then, the moves L, R, U and F' have been applied, in that order.
Notice that each centre square is different, and corresponds to the same colour as in the mapping)