どなたか「数字の1から18までを一つずつ使って、9個の1より小さい既約分数を作ること
が出来る組合せが何通り出来るか」を調べてくれませんか?
計算で求まるのか?コンピュータでプログラム的に処理できるのか?どちらでも構いませ
んのでお願いします。
らすかるさんからのコメントです。(令和6年4月14日付け)
「A009679」で正しければ、59616通りだと思います。計算で出すのは難しいと思います。
# n=2,4,6,…,18に対する組合せ数をプログラムで調べ、結果の数列を検索したら一致する
ものがありました。
GAI さんからのコメントです。(令和6年4月14日付け)
私は一週間ぐらい試行錯誤を繰り返し、プログラムを色々書き直しやっと全部で58320通り
を求めたと思っていたんですが、どこかに見落としがあるのかな〜。自分でも何度も見直した
んですが、それが分からないのです。
(考え方) 全部が規約な分数であるため、分子と分母は奇数、偶数での組合わせとなるので
A=[2,4,6,8,10,12,14,16,18] 、B=[1,3,5,7,9,11,13,15,17]
の2組に分け、AとBを組合わせてできる1より小さい既約分数は、次の69個で
M=[1/2, 2/3, 2/5, 2/7, 2/9, 2/11, 2/13, 2/15, 2/17,1/4, 3/4, 4/5, 4/7, 4/9, 4/11, 4/13, 4/15,
4/17,1/6, 5/6, 6/7, 6/11, 6/13, 6/17,1/8, 3/8, 5/8, 7/8, 8/9, 8/11, 8/13,
8/15, 8/17,1/10,
3/10, 7/10, 9/10, 10/11, 10/13, 10/17,1/12, 5/12, 7/12, 11/12, 12/13, 12/17,1/14, 3/14,
5/14, 9/14, 11/14, 13/14, 14/15, 14/17,1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16, 15/16,
16/17,1/18, 5/18, 7/18, 11/18, 13/18, 17/18]
これから組合わせて調べるのは、対象が多すぎるので手分けしていく。
(1) 1/2を使うとすれば残りは、1、2 の数字をふくまない物から構成するので
Q1=[ 3/4, 4/5, 4/7, 4/9, 4/11, 4/13, 4/15, 4/17]
Q2=[5/6, 6/7, 6/11, 6/13, 6/17]
Q3=[ 3/8, 5/8, 7/8, 8/9, 8/11, 8/13, 8/15, 8/17]
Q4=[3/10, 7/10, 9/10, 10/11, 10/13, 10/17]
Q5=[5/12, 7/12, 11/12, 12/13, 12/17]
Q6=[ 3/14, 5/14, 9/14, 11/14, 13/14, 14/15, 14/17]
Q7=[3/16, 5/16, 7/16, 9/16, 11/16, 13/16, 15/16, 16/17]
Q8=[5/18, 7/18, 11/18, 13/18, 17/18]
に分けて置き、
for(n1=1,8,Q1[n1])
for(n2=1,5,Q2[n2])
for(n3=1,8,Q3[n3])
for(n4=1,6,Q4[n4])
for(n5=1,5,Q5[n5])
for(n6=1,7,Q6[n6])
for(n7=1,8,Q7[n7])
for(n8=1,5,Q8[n8])
でそれぞれのグループから既約分数を組合わせていく。
その組合わせが異なる16個の異なる数字から作られていればカウントして集計する。
こうして求まった集計が、s1=4788 と得られた。同様な考え方で
(2) 2/3を使うとすれば残りは、2、3 を含まない物から組み合わせていくので、Q1〜Q8をそれ
に合わせて選び直し、条件を満たすものをカウントしていくと、s2=9144
以下同様で
(3) 2/5を使う場合、s3=5328
(4) 2/7を使う場合、s4=5184
(5) 2/9を使う場合、s5=9144
(6) 2/11を使う場合、s6=4788
(7) 2/13を使う場合、s7=4788
(8) 2/15を使う場合、s8=10368
(9) 2/17を使う場合、s9=4788
以上から求める総数は、4788*4+5184+5328+9144*2+10368=58320通り なのです。
これが正解と思われる59616通りなので、1296通りは何処へ行ったのか?
らすかるさんからのコメントです。(令和6年4月14日付け)
(8) 2/15を使う場合の値は10368でなく11664です。その他はすべて合っていました。
GAI さんからのコメントです。(令和6年4月14日付け)
2/15のチェックをしたら、
Q4=[[1, 10], [3, 10], [7, 10], [9, 10], [10, 11], [10, 13], [10, 17]]
に対する for(n4=1,7,Q4[n4])でのチェックであるべき所を for(n4=1,6,Q4[n4]) と間違って処
理していたことが原因であることが判明しました。
間違えない様に慎重に進んでいた調査も、終盤に近くなった頃にタイプミスを発生させてし
まっていた。
再度for(n4=1,7,Q4[n4])での確認では、s7=11664で一致出来ました。
間違えたのに気付くためには、間違ったことを確認した後でしか見えてこないので厄介です。
らすかるさんからのコメントです。(令和6年4月14日付け)
Q1,Q2,…をプログラムで生成し、その個数を(プログラムで自動的に)ループカウントにす
れば間違えることはなくなると思います。
GAI さんからのコメントです。(令和6年4月15日付け)
人がプログラムを作っているのを参考にしていたら、あんなに何日も考えてやっと手に入れ
た数値が
gp > matpermanent(matrix(9,9,i,j,gcd(2*i,2*j-1)==1))
%192 = 59616通り
の一発で行けるという。
従って、1〜32の数字をそれぞれ一度しか使用できなく、16個の1より小さい既約分数を
(4×4行列を作れる)作れる組合せの総数は、
gp > matpermanent(matrix(16,16,i,j,gcd(2*i,2*j-1)==1))
%193 = 768372168960通り
から、とてもまともには求めることが難しい大きさでも、いとも簡単にわかるという!!
ほんとに数学の力(中にある数学的構造の不思議さ)を感じます。
DD++ さんからのコメントです。(令和6年4月17日付け)
計算で一般的に出すのは難しいとしても、今回の数値設定に限るなら、さほど難しくないで
すよ。
とりあえず 2 と 3 で約分できないように分数を作る方法は、
6 の倍数を使う 3 組、3 の倍数と 2 の倍数を使う 3 組、残り 3 組の順に考えて、
6P3 * 6P3 * 3! = 86400 通り
この中で、
5/10 ができてしまう組が、5P3 * 5P3 * 2! = 7200 通り
10/15 ができてしまう組が、6P3 * 5P2 * 3! = 14400 通り
7/14 ができてしまう組が、5P3 * 5P3 * 2! = 7200 通り
5/10 と 7/14 がともにできてしまう組が、4P3 * 4P3 * 1! = 576 通り
10/15 と 7/14 がともにできてしまう組が、5P3 * 4P2 * 2! = 1440 通り
よって、いずれも既約分数になる組は、86400-7200-14400-7200+576+1440 = 59616 通り
GAI さんからのコメントです。(令和6年4月18日付け)
すみません、DD++さん。説明文とそれを示す式が私の頭では何をどう考えたら成り立つの
か全く見えてきません。
例えば、6 の倍数を使う 3 組、3 の倍数と 2 の倍数を使う 3 組、残り 3 組の順に考えて、
6P3 * 6P3 * 3! = 86400 通り
はて?6P3の「6」は何を指した6なのか?3!は何をもって3!にするのか?
以下後の方の説明文と式の意味が全く読み取れなくいます。
計算とそれから導かれる結果は正しいのだから、それぞれには導く理由を持つ根拠がある
事は理解できるんですが、全体を通した構想のあらすじが見えていない事なんだと思います。
もう少し解説を入れて説明願えませんか?
DD++ さんからのコメントです。(令和6年4月18日付け)
18 までの中には偶数が 9 個あるので、2 で約分できないためには全て偶数と奇数で対に
して分数を作る必要があります。
そして、3 でも約分できないように対にするには、
・6 の倍数(3 つある)には 3 で割り切れない奇数(6 つある)の中から 3 つ選んで割り当てる
・3 の倍数である奇数(3 つある)には、3 で割り切れない偶数(6 つある)の中から 3 つ選ん
で割り当てる
・残った 3 つずつは、適当に偶数と奇数のペアを 3 組作る
ことになります。
だから 6P3 * 6P3 * 3! = 86400 通り となります。
それ以後も、指定の分数を最初に作ってしまうことにすると、何個から何個選ぶかが変わ
りますが、考え方は同じです。
以下、工事中!