AccessViolation Exception

仕事でもはんだづけ、家でもはんだづけ

Scalaで数珠順列

数珠順列


ex:円形のテーブルにA,B,C,Dさんが座る順番は何通り?

円順列であれば

A,B,C,D←(イ)
A,B,D,C
A,C,B,D
A,C,D,B
A,D,B,C
A,D,C,B←(ロ)

だが、数珠順列はこれから並ぶ方向を考慮する。

例えば(イ),(ロ)について考えれば、(ロ)を逆向きにたどって読めば(イ)と同一となる

よってこれらを除外すれば

A,B,C,D
A,B,D,C
A,C,B,D

これをscalaで作る

ひとまず円順列を実装していたのだがそもそもpermutations,combinationsが実装されているのでこっからfilterかける

逆順は最初の要素を固定したとみなして、2番目と最後の要素でドロップしただけ。楽勝ですね

数珠順列