メンチン9面待ちプロジェクトその2
2024/01/22
上手く行かなかった原因が、コードを紙に印刷して整理したら判明した。
原因は頭を落としていなかったこと。つまり
>tehai=tehai/Prime[atama]**2
の一行を入れ忘れていたこと。
オンラインだとタイムアウトしてしまったのでローカルで動かした結果、
C:\ruby>mentin13.rb
"3,1,1,1,1,1,1,1,3"
30276
つまり13面待ちになるのは純正九蓮宝燈の形のみ。
伊達にダブル役満じゃないね。
完成コードは以下の通り。本当はアガリ判定に七対子も入れないといけないんだけど今回は結果に影響が無いので割愛した。
# Your code here!
Prime=[1,2,3,5,7,11,13,17,19,23]
t=0
for a in 0..3
for b in 0..3
for c in 0..3
for d in 0..3
if a+b+c+d<1 then;emin=1;else;emin=0;end
if a+b+c+d>10 then;emax=13-a-b-c-d;else;emax=3;end
for e in emin..emax
if a+b+c+d+e<4 then;fmin=4-a-b-c-d-e;else;fmin=0;end
if a+b+c+d+e>10 then;fmax=13-a-b-c-d-e;else;fmax=3;end
for f in fmin..fmax
if a+b+c+d+e+f<7 then;gmin=7-a-b-c-d-e-f;else;gmin=0;end
if a+b+c+d+e+f>10 then;gmax=13-a-b-c-d-e-f;else;gmax=3;end
for g in gmin..gmax
if a+b+c+d+e+f+g<10 then;hmin=10-a-b-c-d-e-f-g;else;hmin=0;end
if a+b+c+d+e+f+g>10 then;hmax=13-a-b-c-d-e-f-g;else;hmax=3;end
for h in hmin..hmax
i=13-a-b-c-d-e-f-g-h
t+=1
machi=1
for tumo in 1..9
agari=0
for atama in 1..9
tehai=2**a*3**b*5**c*7**d*11**e*13**f*17**g*19**h*23**i*Prime[tumo]
#if t%1000==0 then;p "#{t},#{tehai}";end
if tehai%Prime[atama]**2==0 then
tehai=tehai/Prime[atama]**2
if tehai%8==0 then;tehai=tehai/8;end
if tehai%30==0 then;tehai=tehai/30;end
if tehai%30==0 then;tehai=tehai/30;end
if tehai%27==0 then;tehai=tehai/27;end
if tehai%105==0 then;tehai=tehai/105;end
if tehai%105==0 then;tehai=tehai/105;end
if tehai%125==0 then;tehai=tehai/125;end
if tehai%385==0 then;tehai=tehai/385;end
if tehai%385==0 then;tehai=tehai/385;end
if tehai%343==0 then;tehai=tehai/343;end
if tehai%1001==0 then;tehai=tehai/1001;end
if tehai%1001==0 then;tehai=tehai/1001;end
if tehai%1331==0 then;tehai=tehai/1331;end
if tehai%2431==0 then;tehai=tehai/2431;end
if tehai%2431==0 then;tehai=tehai/2431;end
if tehai%2197==0 then;tehai=tehai/2197;end
if tehai%4199==0 then;tehai=tehai/4199;end
if tehai%4199==0 then;tehai=tehai/4199;end
if tehai%4913==0 then;tehai=tehai/4913;end
if tehai%7429==0 then;tehai=tehai/7429;end
if tehai%7429==0 then;tehai=tehai/7429;end
if tehai%6859==0 then;tehai=tehai/6859;end
if tehai%12167==0 then;tehai=tehai/12167;end
if tehai==1 then;agari=1;else;agari=0;end
end
if agari==1 then;break;end
end #for atama
if agari==1 then;machi=machi*Prime[tumo];end
end #for tumo
if machi==223092870 then;p "#{a},#{b},#{c},#{d},#{e},#{f},#{g},#{h},#{i}";end
end
end
end
end
end
end
end
end
p t
原因は頭を落としていなかったこと。つまり
>tehai=tehai/Prime[atama]**2
の一行を入れ忘れていたこと。
オンラインだとタイムアウトしてしまったのでローカルで動かした結果、
C:\ruby>mentin13.rb
"3,1,1,1,1,1,1,1,3"
30276
つまり13面待ちになるのは純正九蓮宝燈の形のみ。
伊達にダブル役満じゃないね。
完成コードは以下の通り。本当はアガリ判定に七対子も入れないといけないんだけど今回は結果に影響が無いので割愛した。
# Your code here!
Prime=[1,2,3,5,7,11,13,17,19,23]
t=0
for a in 0..3
for b in 0..3
for c in 0..3
for d in 0..3
if a+b+c+d<1 then;emin=1;else;emin=0;end
if a+b+c+d>10 then;emax=13-a-b-c-d;else;emax=3;end
for e in emin..emax
if a+b+c+d+e<4 then;fmin=4-a-b-c-d-e;else;fmin=0;end
if a+b+c+d+e>10 then;fmax=13-a-b-c-d-e;else;fmax=3;end
for f in fmin..fmax
if a+b+c+d+e+f<7 then;gmin=7-a-b-c-d-e-f;else;gmin=0;end
if a+b+c+d+e+f>10 then;gmax=13-a-b-c-d-e-f;else;gmax=3;end
for g in gmin..gmax
if a+b+c+d+e+f+g<10 then;hmin=10-a-b-c-d-e-f-g;else;hmin=0;end
if a+b+c+d+e+f+g>10 then;hmax=13-a-b-c-d-e-f-g;else;hmax=3;end
for h in hmin..hmax
i=13-a-b-c-d-e-f-g-h
t+=1
machi=1
for tumo in 1..9
agari=0
for atama in 1..9
tehai=2**a*3**b*5**c*7**d*11**e*13**f*17**g*19**h*23**i*Prime[tumo]
#if t%1000==0 then;p "#{t},#{tehai}";end
if tehai%Prime[atama]**2==0 then
tehai=tehai/Prime[atama]**2
if tehai%8==0 then;tehai=tehai/8;end
if tehai%30==0 then;tehai=tehai/30;end
if tehai%30==0 then;tehai=tehai/30;end
if tehai%27==0 then;tehai=tehai/27;end
if tehai%105==0 then;tehai=tehai/105;end
if tehai%105==0 then;tehai=tehai/105;end
if tehai%125==0 then;tehai=tehai/125;end
if tehai%385==0 then;tehai=tehai/385;end
if tehai%385==0 then;tehai=tehai/385;end
if tehai%343==0 then;tehai=tehai/343;end
if tehai%1001==0 then;tehai=tehai/1001;end
if tehai%1001==0 then;tehai=tehai/1001;end
if tehai%1331==0 then;tehai=tehai/1331;end
if tehai%2431==0 then;tehai=tehai/2431;end
if tehai%2431==0 then;tehai=tehai/2431;end
if tehai%2197==0 then;tehai=tehai/2197;end
if tehai%4199==0 then;tehai=tehai/4199;end
if tehai%4199==0 then;tehai=tehai/4199;end
if tehai%4913==0 then;tehai=tehai/4913;end
if tehai%7429==0 then;tehai=tehai/7429;end
if tehai%7429==0 then;tehai=tehai/7429;end
if tehai%6859==0 then;tehai=tehai/6859;end
if tehai%12167==0 then;tehai=tehai/12167;end
if tehai==1 then;agari=1;else;agari=0;end
end
if agari==1 then;break;end
end #for atama
if agari==1 then;machi=machi*Prime[tumo];end
end #for tumo
if machi==223092870 then;p "#{a},#{b},#{c},#{d},#{e},#{f},#{g},#{h},#{i}";end
end
end
end
end
end
end
end
end
p t