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->1
dan 4->5->4
dan 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 id
dapat 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->2
dapat ditulis (1 4 2 3)
dengan elemen terkecil pertama
[[1, 2], [3, 4]]
bukan(1 2)(3 4)
?