大した話ではない数の列の生成

 いつものようにたいした話ではないが、次のような性質をもつ数列の作成に挑んだ。
(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個あります。

 これを何に使うかは次回のお楽しみということで。