NHIỆM VỤ
ĐỊNH NGHĨA
Hãy xem xét các điểm {1,2,3,4,5} và tất cả các hoán vị của chúng. Chúng ta có thể tìm thấy tổng số hoán vị có thể có của 5 điểm này bằng một mẹo đơn giản: Hình ảnh lấp đầy 5 vị trí với các điểm này, vị trí đầu tiên sẽ có 5 số có thể, 4 số thứ hai (như một đã được sử dụng để điền vào vị trí đầu tiên) 3 thứ ba và như vậy. Do đó, tổng số Hoán vị là 5 * 4 * 3 * 2 * 1; đây sẽ là 5! hoán vị hoặc 120 hoán vị. Chúng ta có thể coi đây là nhóm đối xứng S5, và sau đó Nhóm đối xứng Sn sẽ có n! or (n*n-1*n-2...*1)
hoán vị.
Hoán vị "chẵn" là một nơi có số chu kỳ độ dài chẵn. Nó là đơn giản nhất để hiểu khi viết bằng ký hiệu theo chu kỳ, ví dụ (1 2 3)(4 5)
permutes 1->2->3->1
và 4->5->4
và có một chu kỳ 3 chiều dài (1 2 3)
và một chu kỳ 2 chiều dài (4 5)
. Khi phân loại hoán vị là lẻ hoặc chẵn, chúng ta bỏ qua các chu kỳ độ dài lẻ và nói rằng hoán vị này [ (1 2 3)(4 5)
] là số lẻ vì nó có số lẻ {1} của các chu kỳ độ dài chẵn. Ngay cả ví dụ:
(1)(2 3)(4 5)
= hai 2 chu kỳ dài | NGAY CẢ |(1 2 3 4 5)
= không có chu kỳ chiều dài chẵn | NGAY CẢ | * lưu ý rằng nếu không có chu kỳ độ dài chẵn thì sự hoán vị là chẵn.
Ví dụ kỳ lạ:
(1 2)(3 4 5)
= một chu kỳ 2 chiều dài | ODD |(1)(2 3 4 5)
= một chu kỳ 4 chiều dài | ODD |
Là chính xác một nửa số hoán vị trong bất kỳ Nhóm đối xứng nào, thậm chí chúng ta có thể gọi nhóm chẵn là Nhóm xen kẽ N, vì vậy, S5 = 120 A5 = 60 hoán vị.
THÔNG BÁO
Hoán vị, ít nhất, nên được viết bằng ký hiệu tuần hoàn trong đó mỗi chu kỳ nằm trong ngoặc đơn khác nhau và mỗi chu kỳ đi theo thứ tự tăng dần. Ví dụ (1 2 3 4 5)
không (3 4 5 1 2)
. Và đối với các chu kỳ có một số duy nhất, chẳng hạn như: (1)(2 3 4)(5)
các điểm đơn / cố định có thể được loại trừ ý nghĩa (1)(2 3 4)(5) = (2 3 4)
. Nhưng danh tính {điểm mà tất cả các điểm được cố định (1)(2)(3)(4)(5)
} nên được viết như ()
chỉ để thể hiện nó.
CÁC THÁCH THỨC
Tôi muốn bạn, trong càng ít mã càng tốt, lấy bất kỳ số nguyên dương nào làm đầu vào {1,2,3,4 ...} và hiển thị tất cả các hoán vị của Nhóm luân phiên An trong đó n là đầu vào / tất cả các số chẵn hoán vị của Sn. Ví dụ:
Input = 3
()
(1 2 3)
(1 3 2)
và
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)
Và như trong các ví dụ tôi muốn cho tất cả các chu kỳ có độ dài được tách ra và đối với danh tính: đầu ra không có gì,
()
{không chỉ dấu ngoặc mà với bất cứ điều gì bạn đang sử dụng để hiển thị các hoán vị khác nhau} hoặc id
được chấp nhận.
ĐỌC THÊM
Bạn có thể tìm thêm thông tin ở đây:
CHÚC MAY MẮN
Và vì đây là codegolf, bất cứ ai có thể in hoán vị của Nhóm xen kẽ trong các byte ngắn nhất sẽ thắng.
(2 3 1 4)
theo thứ tự tăng dần? Bạn có nghĩa là chúng ta chỉ nên đặt yếu tố nhỏ nhất ở phía trước?
(2 3 1 4)
không 2->3->1->4->2
nó có thể được viết (1 4 2 3)
với phần tử nhỏ nhất của nó đầu tiên
[[1, 2], [3, 4]]
thay vì(1 2)(3 4)
?