Dengan dua permutasi dalam bentuk siklus disjoint, output produk / komposisinya dalam bentuk siklus disjoint.
Untuk menemukan komposisi, konversi siklus terpisah menjadi permutasi dalam notasi dua baris. Setiap angka di bagian yang terpisah dari suatu siklus dipetakan ke nomor yang mengikutinya di bagian yang sama. Itu membungkus. Jadi 1 -> 5
, 5 -> 1
, 2 -> 4
, 4 -> 2
. Jika nomor tidak ditemukan 3 -> 3
, maka dipetakan ke dirinya sendiri. Siklus saling lepas pertama juga bisa ditulis (1 5)(2 4)(3)
. Pemetaan ini dikonversikan menjadi dua baris, seperti demikian (perhatikan bahwa urutan P dan Q terbalik):
[T] he produk dari dua permutasi diperoleh dengan mengatur ulang kolom dari permutasi kedua (paling kiri) sehingga baris pertama identik dengan baris kedua dari permutasi pertama (paling kanan). Produk kemudian dapat ditulis sebagai baris pertama dari permutasi pertama di atas baris kedua dari permutasi kedua yang dimodifikasi.
Aturan:
- Input akan diberikan sebagai daftar daftar atau format serupa
- Anda mungkin tidak mengambil sesuatu seperti
(1 5)(2 4)
seperti[5, 4, 3, 2, 1]
, sudah dalam bentuk dua-line (indeks pemetaan nilai) - Tidak semua angka harus muncul di setiap grup, jadi Anda bisa
(1 5)·(1 2)
, menghasilkan(2 5 1)
. - Output Anda harus dapat digunakan sebagai input Anda.
- Anda tidak perlu mendukung input dengan siklus kosong
(1 5)·()
. Yang sebaliknya akan diberikan sebagai(1 5)·(1)
atau sesuatu yang setara. - Karena siklus membungkus, urutannya tidak masalah asalkan hasilnya benar.
- Anda bisa mulai dari nol atau satu. Tidak masalah, karena hasilnya sama.
- Jumlahnya bisa lebih besar dari
9
. - Anda mungkin tidak memasukkan angka yang sama lebih dari sekali dalam output. Jadi
[[1],[1]]
tidak diijinkan. - Perhatikan bahwa operasi ini tidak komutatif ! Saya menempatkan Q di depan P, karena itulah yang dilakukan Wikipedia. Anda dapat memilih pesanan apa pun, tetapi tentukan yang mana jika berbeda.
- Kode terpendek menang
- Built-in diizinkan, tetapi jika Anda menggunakannya, tunjukkan solusi tanpa menggunakannya juga.
Contoh:
Tidak semua kemungkinan output setara ditampilkan
Input
Output
[[1, 5], [2, 4]], [[1, 2, 4, 3]]
[[1, 4, 3, 5]] (or [[4, 3, 5, 1]] or ...)
[[1, 5]], [[1, 2]]
[[2, 5, 1]]
[[10, 2, 3]], [[2]]
[[3, 10, 2]]
[[1]], [[3]]
[[]] (or [[1]] or something equivalent)
[[10,2,3,15],[1,7],[5,6],[14,4,13,11,12]], [[5,6,7,9,14],[2,8,3,10],[1,11]]
[[12, 14, 6, 1], [8, 15, 10, 3, 2], [13, 11, 7, 9, 4]]
(arguments in reverse order from above gives a different answer)
[[5,6,7,9,14],[2,8,3,10],[1,11]], [[10,2,3,15],[1,7],[5,6],[14,4,13,11,12]]
[[9, 14, 4, 13, 1], [10, 8, 3, 15, 2], [7, 11, 12, 5]]