TUGAS
DEFINISI
Pertimbangkan poin {1,2,3,4,5} dan semua permutasi mereka. Kita dapat menemukan jumlah total kemungkinan permutasi dari 5 poin ini dengan trik sederhana: Imaging mengisi 5 slot dengan poin-poin ini, slot pertama akan memiliki 5 angka yang mungkin, 4 yang kedua (seperti yang telah digunakan untuk mengisi slot pertama) 3 ketiga dan seterusnya. Dengan demikian jumlah total Permutasi adalah 5 * 4 * 3 * 2 * 1; ini akan menjadi 5! permutasi atau 120 permutasi. Kita dapat menganggap ini sebagai grup simetris S5, dan kemudian Grup Simetri Sn akan memiliki n! or (n*n-1*n-2...*1)permutasi.
Permutasi "genap" adalah permutasi di mana ada jumlah genap dari siklus panjang genap. Paling mudah dipahami ketika ditulis dalam notasi siklik, misalnya (1 2 3)(4 5)permutasi 1->2->3->1dan 4->5->4dan memiliki satu siklus 3 panjang (1 2 3)dan satu siklus 2 panjang (4 5). Saat mengklasifikasikan permutasi sebagai ganjil atau genap kami mengabaikan siklus panjang ganjil dan mengatakan bahwa permutasi ini [ (1 2 3)(4 5)] ganjil karena memiliki bilangan ganjil {1} dari siklus panjang genap. Bahkan contoh:
(1)(2 3)(4 5)= dua 2 siklus panjang | BAHKAN |(1 2 3 4 5)= tidak ada siklus panjang | BAHKAN | * perhatikan bahwa jika tidak ada siklus panjang yang hadir maka permutasi adalah genap.
Contoh Aneh:
(1 2)(3 4 5)= satu siklus 2 panjang | GANJIL |(1)(2 3 4 5)= satu siklus 4 panjang | GANJIL |
Tepatnya setengah dari permutasi dalam Grup Symmetric mana pun bahkan kita dapat memanggil grup genap sebagai Alternating Group N, Sehingga S5 = 120 A5 = 60 permutasi.
PEMBERITAHUAN
Permutasi, setidaknya untuk ini, harus ditulis dalam notasi siklik di mana setiap siklus dalam kurung yang berbeda dan setiap siklus berjalan dalam urutan menaik. Misalnya (1 2 3 4 5)tidak (3 4 5 1 2). Dan untuk siklus dengan angka tunggal, seperti: (1)(2 3 4)(5)titik tunggal / tetap dapat dikecualikan artinya (1)(2 3 4)(5) = (2 3 4). Tetapi identitas {titik di mana semua titik ditetapkan (1)(2)(3)(4)(5)} harus ditulis ()hanya untuk mewakilinya.
TANTANGAN
Saya ingin Anda, dalam kode sesedikit mungkin, mengambil bilangan bulat positif sebagai input {1,2,3,4 ...} dan menampilkan semua permutasi dari Alternating Group An di mana n adalah input / semua bahkan permutasi dari Sn. Sebagai contoh:
Input = 3
()
(1 2 3)
(1 3 2)
dan
Input = 4
()
(1 2)(3 4)
(1 3)(2 4)
(1 4)(2 3)
(1 2 3)
(1 3 2)
(1 2 4)
(1 4 2)
(1 3 4)
(1 4 3)
(2 3 4)
(2 4 3)
Dan seperti dalam contoh saya ingin semua siklus dari satu panjang untuk dieliminasi, dan untuk identitas: output apa - apa, (){tidak hanya tanda kurung tetapi dengan apa pun yang Anda gunakan untuk menunjukkan permutasi yang berbeda} atau iddapat diterima.
BACAAN EKSTRA
Anda dapat menemukan informasi lebih lanjut di sini:
SEMOGA BERHASIL
Dan karena ini adalah codegolf, siapa pun yang dapat mencetak permutasi Alternating Group An dalam byte terpendek, akan menang.
(2 3 1 4)dalam urutan menaik? Maksudmu kita harus meletakkan elemen terkecil di depan?
(2 3 1 4)tidak 2->3->1->4->2dapat ditulis (1 4 2 3)dengan elemen terkecil pertama
[[1, 2], [3, 4]]bukan(1 2)(3 4)?