そろそろ「G1予想大会」の準備をしないと…。
今日は病み上がりで本職に行ってきました。
この5日間、ほっとんど動かなかったので
さすがに疲れました。
困ったものです。
---
さて。
そろそろサイトのほうでは
「G1予想大会」の準備をしないとなぁ…と少々焦っています。
この春までは
単勝・馬連・馬単での投票が可能でしたが
今後はこれに加えて3連複・3連単の投票も可能にするという改修です。
んで、何が改修を遅らせているのかというと…数学の問題。
「3連複のフォーメーション、点数の数え方って?」
馬連のほうは意外と単純で
1頭目のマーク(馬番)を順番に追っていきつつ
2頭目のマーク(馬番)と数字を比較し
同じならスキップ。2頭目のほうが小さければ1頭目と2頭目の馬番を入れ替える。
これを1頭目の頭数分繰り返して処理をして、重複したデータを削除すればカウント終了。
具体的には
1,2,3−2,3,4,5の馬連の場合
1) 1頭目が1の時の処理。
1-2、1-3、1-4、1-5で4通り。
2) 1頭目が2の時の処理。
2-2は同じ数字なのでスキップ。2-3、2-4、2-5で3通り。
3) 1頭目が3の時の処理。
3-2は2頭目のほうが数字が小さいので2-3に。3-3は同じ数字なのでスキップ。3-4、3-5とあわせて3通り。
んでトータルで見て、2-3が重複しているので1通り削除。
合計は4通り+3通り+3通り−1通り=9通り。
これが3連複になった場合は…
例えば1,2,3−2,3,4−3,4,5の3連複フォーメーションでは…?
1) 1頭目が1の時の処理
a) 2頭目が2の時の処理
1-2-3、1-2-4、1-2-5の3通り
b) 2頭目が3の時の処理
1-3-3は3が重複するのでスキップ、1-3-4、1-3-5の2通り
c) 2頭目が4の時の処理
1-4-3は小さい順に並べて1-3-4、1-4-4は4が重複するのでスキップ、1-4-5と合わせて2通り。
2) 2頭目が2の時の処理
…
3) 3頭目が3の時の処理
…
という感じで、(1頭目の頭数×2頭目の頭数×3頭目の頭数)回の処理をしなくてはならない…のか?
そしてその都度、数字を小さい順に並べ替えたり、重複する数字はスキップしたり…
え?ちょっとめんどくさくない?
もうちょっと簡単な計算方法がないかなぁ?と思って模索しているところです。
3連単の場合は
数字を小さい順に並べ替える処理が不要となって
1頭目と2頭目、2頭目と3頭目、1頭目と3頭目の数字(馬番)が同じ時にスキップする処理を考えれば
とりあえずフォーメーションのカウントはできそうなので何とかなりそう。
ただし「流しマルチ」の処理が別で必要になりますね。
馬連・馬単・3連複の場合と3連単のマルチじゃない「流し」は
フォーメーションで流用できます。
マルチの場合は…これは完全に別ロジックで考えないとならないな。
計算的には
軸1頭マルチなら相手頭数×(相手頭数−1)×3
軸2頭マルチなら相手頭数×6
で点数だけなら簡単に処理できるんですが…。
軸1頭マルチなら、馬単ボックスの処理×3でいけるか?
軸2頭マルチなら…どうすればいいか?
ちょっと数学脳に切り替えないと
ちゃんとプログラムを組めそうにありません…。
試行錯誤しながらも
来月頭に控えた秋のG1には間に合わせたいと思っています。
-----
今夜はこれにて終了。
久々の本職で疲れましたので、早々に切り上げます。
明日以降、今日のネタで書いた処理の追加作業をしたいと思います。
この5日間、ほっとんど動かなかったので
さすがに疲れました。
困ったものです。
---
さて。
そろそろサイトのほうでは
「G1予想大会」の準備をしないとなぁ…と少々焦っています。
この春までは
単勝・馬連・馬単での投票が可能でしたが
今後はこれに加えて3連複・3連単の投票も可能にするという改修です。
んで、何が改修を遅らせているのかというと…数学の問題。
「3連複のフォーメーション、点数の数え方って?」
馬連のほうは意外と単純で
1頭目のマーク(馬番)を順番に追っていきつつ
2頭目のマーク(馬番)と数字を比較し
同じならスキップ。2頭目のほうが小さければ1頭目と2頭目の馬番を入れ替える。
これを1頭目の頭数分繰り返して処理をして、重複したデータを削除すればカウント終了。
具体的には
1,2,3−2,3,4,5の馬連の場合
1) 1頭目が1の時の処理。
1-2、1-3、1-4、1-5で4通り。
2) 1頭目が2の時の処理。
2-2は同じ数字なのでスキップ。2-3、2-4、2-5で3通り。
3) 1頭目が3の時の処理。
3-2は2頭目のほうが数字が小さいので2-3に。3-3は同じ数字なのでスキップ。3-4、3-5とあわせて3通り。
んでトータルで見て、2-3が重複しているので1通り削除。
合計は4通り+3通り+3通り−1通り=9通り。
これが3連複になった場合は…
例えば1,2,3−2,3,4−3,4,5の3連複フォーメーションでは…?
1) 1頭目が1の時の処理
a) 2頭目が2の時の処理
1-2-3、1-2-4、1-2-5の3通り
b) 2頭目が3の時の処理
1-3-3は3が重複するのでスキップ、1-3-4、1-3-5の2通り
c) 2頭目が4の時の処理
1-4-3は小さい順に並べて1-3-4、1-4-4は4が重複するのでスキップ、1-4-5と合わせて2通り。
2) 2頭目が2の時の処理
…
3) 3頭目が3の時の処理
…
という感じで、(1頭目の頭数×2頭目の頭数×3頭目の頭数)回の処理をしなくてはならない…のか?
そしてその都度、数字を小さい順に並べ替えたり、重複する数字はスキップしたり…
え?ちょっとめんどくさくない?
もうちょっと簡単な計算方法がないかなぁ?と思って模索しているところです。
3連単の場合は
数字を小さい順に並べ替える処理が不要となって
1頭目と2頭目、2頭目と3頭目、1頭目と3頭目の数字(馬番)が同じ時にスキップする処理を考えれば
とりあえずフォーメーションのカウントはできそうなので何とかなりそう。
ただし「流しマルチ」の処理が別で必要になりますね。
馬連・馬単・3連複の場合と3連単のマルチじゃない「流し」は
フォーメーションで流用できます。
マルチの場合は…これは完全に別ロジックで考えないとならないな。
計算的には
軸1頭マルチなら相手頭数×(相手頭数−1)×3
軸2頭マルチなら相手頭数×6
で点数だけなら簡単に処理できるんですが…。
軸1頭マルチなら、馬単ボックスの処理×3でいけるか?
軸2頭マルチなら…どうすればいいか?
ちょっと数学脳に切り替えないと
ちゃんとプログラムを組めそうにありません…。
試行錯誤しながらも
来月頭に控えた秋のG1には間に合わせたいと思っています。
-----
今夜はこれにて終了。
久々の本職で疲れましたので、早々に切り上げます。
明日以降、今日のネタで書いた処理の追加作業をしたいと思います。
このネタへのコメント:
コメントはありません。