数学では、長さnのリストを並べ替えるときは、並べ替えを使ってリストに作用します。例:長さnのリストに作用する置換
(1 2) * (x, y, z) = (y, x, z)
(1 n 2) * (v[1], v[2], ..., v[n]) = (v[n], v[1], ..., v[2])
perm * (v[1], v[2], ..., v[n]) = (v[perm(1)], v[perm(2)], ..., v[perm(n)])
ハスケルでこれを行うにはどうすればよいですか?
これはpermの通常の定義ですか、そうですか? 'perm :: {1,2 ...、N} - > {1,2 ...、N}'となる。 O(N^2)アルゴリズムはかなりシンプルであるべきですが、 '(1 n 2)'の入力は回転であり、バイジェクションではありません。あなたの実際の入力は何ですか? – Zeta
@Zeta 'n'が' 3'より大きければ '(1n2)'は '1 | - > n'、' n | - > 2'、 '2 | - > 1、他のすべての値を自分自身に返します。 –
@DanielWagnerこれは私が "回転するもの"を意味するものです:)。私はその種の並べ替えを書く正しい言葉を思い出しません。 – Zeta