算額あれこれ

算額問題をコンピュータで解きます

算額(その1665)

和国知恵較(わこくちえくらべ) 享保12年(1727)

和算の里みしま_パンフレット_HP.pdf
https://e-mishima.info/wp-content/uploads/2020/02/74a075f30cb806eef4a9a25c4a71608e.pdf
キーワード:魔方陣
#Julia #SymPy #算額 #和算 #数学


図の「い」から「ち」に 2 〜 9 の数字を当てはめ,2 つの円周に書かれている数を足しても,また,中心の 1 を除くどの直径に書かれている数を足しても,皆同じになるように数を並べなさい。

2 〜 9 の数字の並べ替え(順列)を行い,4 方向の和が等しくなるものを列挙する。

include("julia-source.txt");  # julia-source.txt ソース

using Combinatorics

count = 0
a = 2:9
p = collect(1:16)
for i in 1:factorial(length(a))
    (い, ろ, は, に, ほ, へ, と, ち) = b = nthperm(a, i)
    x = い + ろ + は + に
    if x == ほ + へ + と + ち && x == い + ほ + と + は && x == ろ + へ + ち + に
        count += 1
        mod(count, 48) == 1 && println(b)
    end
end

768 通りもある。

描画関数プログラムのソースを見る

function draw(x)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    pos = [0 2; 2 0; 0 -2; -2 0; 0 1; 1 0; 0 -1; -1 0]
    r = 0.4
    p = plot(showaxis=false)#, fontsize=24)
    delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
    circle(0, 0, 1, :gray80)
    circle(0, 0, 2, :gray80)
    segment(0, -2, 0, 2, :gray80)
    segment(-2, 0, 2, 0, :gray80)
    circle(0, 0, r)
    rotate(0, 2, r, angle=90)
    rotate(0, 1, r, angle=90)
    println(x)
    annotate!(0, 0, text("1", 12, :blue, :center, :vcenter))
    for i = 1:8
        annotate!(pos[i, 1], pos[i, 2], text(string(x[i]), 12, :blue, :center, :vcenter))
    end
    return p
end;

draw([2, 3, 8, 9, 5, 4, 7, 6])


以下のアイコンをクリックして応援してください