いつものようにたいした話ではないが、次のような性質をもつ数列の作成に挑んだ。
(1,2,3)からなる自由列が増殖してゆく。
その増殖の仕方であります。
二個の組みの時はこうなる。
{{1, 2}, {1, 3}, {2, 1}, {2, 3}, {3, 1}, {3, 2}}
三個の組みではこうなる。
{{1, 2, 1}, {1, 2, 3}, {1, 3, 1}, {1, 3, 2}, {2, 1, 2}, {2, 1, 3}, {2, 3, 1}, {2, 3, 2}, {3, 1, 2}, {3, 1, 3}, {3, 2, 1}, {3, 2, 3}}
つまり、(1,2,3)から重複を許してn個の並びを作成するのですが、隣り合う数が同じものは省くのですね。
4個ではこうしたい。
{{1, 2, 1, 2}, {1, 2, 1, 3}, {1, 2, 3, 1}, {1, 2, 3, 2}, {1, 3, 1, 2}, {1, 3, 1, 3}, {1, 3, 2, 1}, {1, 3, 2, 3}, {2, 1, 2, 1}, {2, 1, 2, 3}, {2, 1, 3, 1}, {2, 1, 3, 2}, {2, 3, 1, 2}, {2, 3, 1, 3}, {2, 3, 2, 1}, {2, 3, 2, 3}, {3, 1, 2, 1}, {3, 1, 2, 3}, {3, 1, 3, 1}, {3, 1, 3, 2}, {3, 2, 1, 2}, {3, 2, 1, 3}, {3, 2, 3, 1}, {3, 2, 3, 2}}
単純な要件ですが、任意の数字のセットでn個の並びをリストアップするコーディングにはずい分、時間がかかりましたねえ。
n=8では384個あります。
これを何に使うかは次回のお楽しみということで。