あみだくじをjulia言語で考えてみました。
はじめに
@geographybu さんからあみだくじの問題がXにポストされました。
これは面白そうなので,考えてみることにしました。
今回のあみだくじをJulia言語で考えてみた
まずは,julia言語
の抽象代数パッケージAbstractAlgebra.jl
を利用して,何回で戻るのか計算してみました。サクッと求まって,いい感じです。
#抽象代数パッケージ
using AbstractAlgebra
#置換(6,4,1,2,5,3)の位数を調べる。
Perm([6,4,1,2,5,3]) |> order
6
今回の場合は 5は変わらず。(1,6,3)は周期3,(2,4)は周期2であるので,2と3の最小公倍数で6となることがわかります。このことは次のように確認できました。
setpermstyle(:cycles)
Perm([6,4,1,2,5,3])
(1,6,3)(2,4)
そして,「他のあみだくじだとどうなるだろう?」と思って全パターン調べてみることにしました。
他のあみだくじをJulia言語で考えてみた
初めは,「6個の数なので6個くらいなのかな?」と漠然と思っていたのですが,周期が1~6すべてあり,6より大きい周期がないことがわかりました。
N=1~10でその様子を調べてみる
まず,julia言語
で下記の表示をする関数を作りました。
- それぞれの位数について何個あるのか?
- それぞれの位数についての例
N=7以上の例を見て気がついたのですが,
- Nの自然数分割を考えて,その最小公倍数を求めれば良いのでは?
- 自然数の分解が数字の周期サイクルになっている。
この辺りも,関数を作ってまとめることにしました。
using Combinatorics,AbstractAlgebra
function amida(n)
#n個の数の置換を作成
X = [k for k = 1:n] |> permutations |> collect
println("・全部で$(length(X))通り")
#位数をチェック
Y =[]
for i ∈ X
t = Perm(i) |> order
append!(Y,t)
end
#位数によって分類
for i = minimum(Y):maximum(Y)
if i ∈ Y
r = findfirst(x -> x==i,Y)
println("・位数$(i)であるのは$(count(==(i),Y))個で,例として$(X[r])")
end
end
end
function g(n)
x = partitions(n) |> collect
for i ∈ x
println("・$(n)を$(i)と分割したときの最小公倍数$(lcm(i))が位数")
end
end
N=1
amida(1)
g(1)
・全部で1通り
・位数1であるのは1個で,例として[1]
・1を[1]と分割したときの最小公倍数1が位数
N=2
amida(2)
g(2)
・全部で2通り
・位数1であるのは1個で,例として[1, 2]
・位数2であるのは1個で,例として[2, 1]
・2を[2]と分割したときの最小公倍数2が位数
・2を[1, 1]と分割したときの最小公倍数1が位数
N=3
amida(3)
g(3)
・全部で6通り
・位数1であるのは1個で,例として[1, 2, 3]
・位数2であるのは3個で,例として[1, 3, 2]
・位数3であるのは2個で,例として[2, 3, 1]
・3を[3]と分割したときの最小公倍数3が位数
・3を[2, 1]と分割したときの最小公倍数2が位数
・3を[1, 1, 1]と分割したときの最小公倍数1が位数
N=4
amida(4)
g(4)
・全部で24通り
・位数1であるのは1個で,例として[1, 2, 3, 4]
・位数2であるのは9個で,例として[1, 2, 4, 3]
・位数3であるのは8個で,例として[1, 3, 4, 2]
・位数4であるのは6個で,例として[2, 3, 4, 1]
・4を[4]と分割したときの最小公倍数4が位数
・4を[3, 1]と分割したときの最小公倍数3が位数
・4を[2, 2]と分割したときの最小公倍数2が位数
・4を[2, 1, 1]と分割したときの最小公倍数2が位数
・4を[1, 1, 1, 1]と分割したときの最小公倍数1が位数
N=5
amida(5)
g(5)
・全部で120通り
・位数1であるのは1個で,例として[1, 2, 3, 4, 5]
・位数2であるのは25個で,例として[1, 2, 3, 5, 4]
・位数3であるのは20個で,例として[1, 2, 4, 5, 3]
・位数4であるのは30個で,例として[1, 3, 4, 5, 2]
・位数5であるのは24個で,例として[2, 3, 4, 5, 1]
・位数6であるのは20個で,例として[2, 1, 4, 5, 3]
・5を[5]と分割したときの最小公倍数5が位数
・5を[4, 1]と分割したときの最小公倍数4が位数
・5を[3, 2]と分割したときの最小公倍数6が位数
・5を[3, 1, 1]と分割したときの最小公倍数3が位数
・5を[2, 2, 1]と分割したときの最小公倍数2が位数
・5を[2, 1, 1, 1]と分割したときの最小公倍数2が位数
・5を[1, 1, 1, 1, 1]と分割したときの最小公倍数1が位数
N=6
amida(6)
g(6)
・全部で720通り
・位数1であるのは1個で,例として[1, 2, 3, 4, 5, 6]
・位数2であるのは75個で,例として[1, 2, 3, 4, 6, 5]
・位数3であるのは80個で,例として[1, 2, 3, 5, 6, 4]
・位数4であるのは180個で,例として[1, 2, 4, 5, 6, 3]
・位数5であるのは144個で,例として[1, 3, 4, 5, 6, 2]
・位数6であるのは240個で,例として[1, 3, 2, 5, 6, 4]
・6を[6]と分割したときの最小公倍数6が位数
・6を[5, 1]と分割したときの最小公倍数5が位数
・6を[4, 2]と分割したときの最小公倍数4が位数
・6を[4, 1, 1]と分割したときの最小公倍数4が位数
・6を[3, 3]と分割したときの最小公倍数3が位数
・6を[3, 2, 1]と分割したときの最小公倍数6が位数
・6を[3, 1, 1, 1]と分割したときの最小公倍数3が位数
・6を[2, 2, 2]と分割したときの最小公倍数2が位数
・6を[2, 2, 1, 1]と分割したときの最小公倍数2が位数
・6を[2, 1, 1, 1, 1]と分割したときの最小公倍数2が位数
・6を[1, 1, 1, 1, 1, 1]と分割したときの最小公倍数1が位数
N=7
amida(7)
g(7)
・全部で5040通り
・位数1であるのは1個で,例として[1, 2, 3, 4, 5, 6, 7]
・位数2であるのは231個で,例として[1, 2, 3, 4, 5, 7, 6]
・位数3であるのは350個で,例として[1, 2, 3, 4, 6, 7, 5]
・位数4であるのは840個で,例として[1, 2, 3, 5, 6, 7, 4]
・位数5であるのは504個で,例として[1, 2, 4, 5, 6, 7, 3]
・位数6であるのは1470個で,例として[1, 2, 4, 3, 6, 7, 5]
・位数7であるのは720個で,例として[2, 3, 4, 5, 6, 7, 1]
・位数10であるのは504個で,例として[2, 1, 4, 5, 6, 7, 3]
・位数12であるのは420個で,例として[2, 3, 1, 5, 6, 7, 4]
・7を[7]と分割したときの最小公倍数7が位数
・7を[6, 1]と分割したときの最小公倍数6が位数
・7を[5, 2]と分割したときの最小公倍数10が位数
・7を[5, 1, 1]と分割したときの最小公倍数5が位数
・7を[4, 3]と分割したときの最小公倍数12が位数
・7を[4, 2, 1]と分割したときの最小公倍数4が位数
・7を[4, 1, 1, 1]と分割したときの最小公倍数4が位数
・7を[3, 3, 1]と分割したときの最小公倍数3が位数
・7を[3, 2, 2]と分割したときの最小公倍数6が位数
・7を[3, 2, 1, 1]と分割したときの最小公倍数6が位数
・7を[3, 1, 1, 1, 1]と分割したときの最小公倍数3が位数
・7を[2, 2, 2, 1]と分割したときの最小公倍数2が位数
・7を[2, 2, 1, 1, 1]と分割したときの最小公倍数2が位数
・7を[2, 1, 1, 1, 1, 1]と分割したときの最小公倍数2が位数
・7を[1, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数1が位数
N=8
amida(8)
g(8)
・全部で40320通り
・位数1であるのは1個で,例として[1, 2, 3, 4, 5, 6, 7, 8]
・位数2であるのは763個で,例として[1, 2, 3, 4, 5, 6, 8, 7]
・位数3であるのは1232個で,例として[1, 2, 3, 4, 5, 7, 8, 6]
・位数4であるのは5460個で,例として[1, 2, 3, 4, 6, 7, 8, 5]
・位数5であるのは1344個で,例として[1, 2, 3, 5, 6, 7, 8, 4]
・位数6であるのは10640個で,例として[1, 2, 3, 5, 4, 7, 8, 6]
・位数7であるのは5760個で,例として[1, 3, 4, 5, 6, 7, 8, 2]
・位数8であるのは5040個で,例として[2, 3, 4, 5, 6, 7, 8, 1]
・位数10であるのは4032個で,例として[1, 3, 2, 5, 6, 7, 8, 4]
・位数12であるのは3360個で,例として[1, 3, 4, 2, 6, 7, 8, 5]
・位数15であるのは2688個で,例として[2, 3, 1, 5, 6, 7, 8, 4]
・8を[8]と分割したときの最小公倍数8が位数
・8を[7, 1]と分割したときの最小公倍数7が位数
・8を[6, 2]と分割したときの最小公倍数6が位数
・8を[6, 1, 1]と分割したときの最小公倍数6が位数
・8を[5, 3]と分割したときの最小公倍数15が位数
・8を[5, 2, 1]と分割したときの最小公倍数10が位数
・8を[5, 1, 1, 1]と分割したときの最小公倍数5が位数
・8を[4, 4]と分割したときの最小公倍数4が位数
・8を[4, 3, 1]と分割したときの最小公倍数12が位数
・8を[4, 2, 2]と分割したときの最小公倍数4が位数
・8を[4, 2, 1, 1]と分割したときの最小公倍数4が位数
・8を[4, 1, 1, 1, 1]と分割したときの最小公倍数4が位数
・8を[3, 3, 2]と分割したときの最小公倍数6が位数
・8を[3, 3, 1, 1]と分割したときの最小公倍数3が位数
・8を[3, 2, 2, 1]と分割したときの最小公倍数6が位数
・8を[3, 2, 1, 1, 1]と分割したときの最小公倍数6が位数
・8を[3, 1, 1, 1, 1, 1]と分割したときの最小公倍数3が位数
・8を[2, 2, 2, 2]と分割したときの最小公倍数2が位数
・8を[2, 2, 2, 1, 1]と分割したときの最小公倍数2が位数
・8を[2, 2, 1, 1, 1, 1]と分割したときの最小公倍数2が位数
・8を[2, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数2が位数
・8を[1, 1, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数1が位数
N=9
amida(9)
g(9)
・全部で362880通り
・位数1であるのは1個で,例として[1, 2, 3, 4, 5, 6, 7, 8, 9]
・位数2であるのは2619個で,例として[1, 2, 3, 4, 5, 6, 7, 9, 8]
・位数3であるのは5768個で,例として[1, 2, 3, 4, 5, 6, 8, 9, 7]
・位数4であるのは30996個で,例として[1, 2, 3, 4, 5, 7, 8, 9, 6]
・位数5であるのは3024個で,例として[1, 2, 3, 4, 6, 7, 8, 9, 5]
・位数6であるのは83160個で,例として[1, 2, 3, 4, 6, 5, 8, 9, 7]
・位数7であるのは25920個で,例として[1, 2, 4, 5, 6, 7, 8, 9, 3]
・位数8であるのは45360個で,例として[1, 3, 4, 5, 6, 7, 8, 9, 2]
・位数9であるのは40320個で,例として[2, 3, 4, 5, 6, 7, 8, 9, 1]
・位数10であるのは27216個で,例として[1, 2, 4, 3, 6, 7, 8, 9, 5]
・位数12であるのは30240個で,例として[1, 2, 4, 5, 3, 7, 8, 9, 6]
・位数14であるのは25920個で,例として[2, 1, 4, 5, 6, 7, 8, 9, 3]
・位数15であるのは24192個で,例として[1, 3, 4, 2, 6, 7, 8, 9, 5]
・位数20であるのは18144個で,例として[2, 3, 4, 1, 6, 7, 8, 9, 5]
・9を[9]と分割したときの最小公倍数9が位数
・9を[8, 1]と分割したときの最小公倍数8が位数
・9を[7, 2]と分割したときの最小公倍数14が位数
・9を[7, 1, 1]と分割したときの最小公倍数7が位数
・9を[6, 3]と分割したときの最小公倍数6が位数
・9を[6, 2, 1]と分割したときの最小公倍数6が位数
・9を[6, 1, 1, 1]と分割したときの最小公倍数6が位数
・9を[5, 4]と分割したときの最小公倍数20が位数
・9を[5, 3, 1]と分割したときの最小公倍数15が位数
・9を[5, 2, 2]と分割したときの最小公倍数10が位数
・9を[5, 2, 1, 1]と分割したときの最小公倍数10が位数
・9を[5, 1, 1, 1, 1]と分割したときの最小公倍数5が位数
・9を[4, 4, 1]と分割したときの最小公倍数4が位数
・9を[4, 3, 2]と分割したときの最小公倍数12が位数
・9を[4, 3, 1, 1]と分割したときの最小公倍数12が位数
・9を[4, 2, 2, 1]と分割したときの最小公倍数4が位数
・9を[4, 2, 1, 1, 1]と分割したときの最小公倍数4が位数
・9を[4, 1, 1, 1, 1, 1]と分割したときの最小公倍数4が位数
・9を[3, 3, 3]と分割したときの最小公倍数3が位数
・9を[3, 3, 2, 1]と分割したときの最小公倍数6が位数
・9を[3, 3, 1, 1, 1]と分割したときの最小公倍数3が位数
・9を[3, 2, 2, 2]と分割したときの最小公倍数6が位数
・9を[3, 2, 2, 1, 1]と分割したときの最小公倍数6が位数
・9を[3, 2, 1, 1, 1, 1]と分割したときの最小公倍数6が位数
・9を[3, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数3が位数
・9を[2, 2, 2, 2, 1]と分割したときの最小公倍数2が位数
・9を[2, 2, 2, 1, 1, 1]と分割したときの最小公倍数2が位数
・9を[2, 2, 1, 1, 1, 1, 1]と分割したときの最小公倍数2が位数
・9を[2, 1, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数2が位数
・9を[1, 1, 1, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数1が位数
N=10
amida(10)
g(10)
・全部で3628800通り
・位数1であるのは1個で,例として[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
・位数2であるのは9495個で,例として[1, 2, 3, 4, 5, 6, 7, 8, 10, 9]
・位数3であるのは31040個で,例として[1, 2, 3, 4, 5, 6, 7, 9, 10, 8]
・位数4であるのは209160個で,例として[1, 2, 3, 4, 5, 6, 8, 9, 10, 7]
・位数5であるのは78624個で,例として[1, 2, 3, 4, 5, 7, 8, 9, 10, 6]
・位数6であるのは584640個で,例として[1, 2, 3, 4, 5, 7, 6, 9, 10, 8]
・位数7であるのは86400個で,例として[1, 2, 3, 5, 6, 7, 8, 9, 10, 4]
・位数8であるのは453600個で,例として[1, 2, 4, 5, 6, 7, 8, 9, 10, 3]
・位数9であるのは403200個で,例として[1, 3, 4, 5, 6, 7, 8, 9, 10, 2]
・位数10であるのは514080個で,例として[1, 2, 3, 5, 4, 7, 8, 9, 10, 6]
・位数12であるのは403200個で,例として[1, 2, 3, 5, 6, 4, 8, 9, 10, 7]
・位数14であるのは259200個で,例として[1, 3, 2, 5, 6, 7, 8, 9, 10, 4]
・位数15であるのは120960個で,例として[1, 2, 4, 5, 3, 7, 8, 9, 10, 6]
・位数20であるのは181440個で,例として[1, 3, 4, 5, 2, 7, 8, 9, 10, 6]
・位数21であるのは172800個で,例として[2, 3, 1, 5, 6, 7, 8, 9, 10, 4]
・位数30であるのは120960個で,例として[2, 1, 4, 5, 3, 7, 8, 9, 10, 6]
・10を[10]と分割したときの最小公倍数10が位数
・10を[9, 1]と分割したときの最小公倍数9が位数
・10を[8, 2]と分割したときの最小公倍数8が位数
・10を[8, 1, 1]と分割したときの最小公倍数8が位数
・10を[7, 3]と分割したときの最小公倍数21が位数
・10を[7, 2, 1]と分割したときの最小公倍数14が位数
・10を[7, 1, 1, 1]と分割したときの最小公倍数7が位数
・10を[6, 4]と分割したときの最小公倍数12が位数
・10を[6, 3, 1]と分割したときの最小公倍数6が位数
・10を[6, 2, 2]と分割したときの最小公倍数6が位数
・10を[6, 2, 1, 1]と分割したときの最小公倍数6が位数
・10を[6, 1, 1, 1, 1]と分割したときの最小公倍数6が位数
・10を[5, 5]と分割したときの最小公倍数5が位数
・10を[5, 4, 1]と分割したときの最小公倍数20が位数
・10を[5, 3, 2]と分割したときの最小公倍数30が位数
・10を[5, 3, 1, 1]と分割したときの最小公倍数15が位数
・10を[5, 2, 2, 1]と分割したときの最小公倍数10が位数
・10を[5, 2, 1, 1, 1]と分割したときの最小公倍数10が位数
・10を[5, 1, 1, 1, 1, 1]と分割したときの最小公倍数5が位数
・10を[4, 4, 2]と分割したときの最小公倍数4が位数
・10を[4, 4, 1, 1]と分割したときの最小公倍数4が位数
・10を[4, 3, 3]と分割したときの最小公倍数12が位数
・10を[4, 3, 2, 1]と分割したときの最小公倍数12が位数
・10を[4, 3, 1, 1, 1]と分割したときの最小公倍数12が位数
・10を[4, 2, 2, 2]と分割したときの最小公倍数4が位数
・10を[4, 2, 2, 1, 1]と分割したときの最小公倍数4が位数
・10を[4, 2, 1, 1, 1, 1]と分割したときの最小公倍数4が位数
・10を[4, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数4が位数
・10を[3, 3, 3, 1]と分割したときの最小公倍数3が位数
・10を[3, 3, 2, 2]と分割したときの最小公倍数6が位数
・10を[3, 3, 2, 1, 1]と分割したときの最小公倍数6が位数
・10を[3, 3, 1, 1, 1, 1]と分割したときの最小公倍数3が位数
・10を[3, 2, 2, 2, 1]と分割したときの最小公倍数6が位数
・10を[3, 2, 2, 1, 1, 1]と分割したときの最小公倍数6が位数
・10を[3, 2, 1, 1, 1, 1, 1]と分割したときの最小公倍数6が位数
・10を[3, 1, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数3が位数
・10を[2, 2, 2, 2, 2]と分割したときの最小公倍数2が位数
・10を[2, 2, 2, 2, 1, 1]と分割したときの最小公倍数2が位数
・10を[2, 2, 2, 1, 1, 1, 1]と分割したときの最小公倍数2が位数
・10を[2, 2, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数2が位数
・10を[2, 1, 1, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数2が位数
・10を[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]と分割したときの最小公倍数1が位数
まとめ
あみだくじの理解も深まりました!
Discussion