🦋

あみだくじをjulia言語で考えてみました。

2024/05/31に公開

はじめに

@geographybu さんからあみだくじの問題がXにポストされました。

https://x.com/geographybu/status/1795362848048398715

これは面白そうなので,考えてみることにしました。

今回のあみだくじを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より大きい周期がないことがわかりました。

https://x.com/dannchu/status/1795675533512261893

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