プログラミング質問広場 |
本掲示板は、プログラミングに関する情報を作者様同士で共有・議論していただく場として用意いたしました。 JV-Link、JV-Dataに直接関連しない(一般論としてのプログラミング方法やAPI・メソッドの利用法などの)スレッドはこちらに立ててください。
|
|
タイトル | : 3連単のインデックス |
記事No | : 353 |
投稿日 | : 2011/12/13(Tue) 22:19 |
投稿者 | : みっち |
|
3連単の配列のインデックスの求め方を教えて下さい。 ず〜っと考えてみたのですがさっぱりわかりません。
たとえば (3連単) 1-2-3 = 0 1-2-4 = 1 ↓ 1-2-18 = 16 1-3-2 = 17
5-4-3 = ?
という感じです。 よろしくお願いいたします。 |
|
タイトル | : Re: 3連単のインデックス |
記事No | : 354 |
投稿日 | : 2011/12/15(Thu) 02:54 |
投稿者 | : 夜更し |
|
面白そうなのでちょっと考えてみました。 場合分けの手間だけで、それほど難しい問題ではないですね。 18頭立てで組み番号が A - B - C のとき INDEX は0からスタートするものとすれば
INDEX = (A - 1) * 17 * 16 + y * 16 + z - 1 ここで y = B - 1 (B < A のとき) y = B - 2 (B > A のとき) z = C (C < A かつ C < B のとき) z = C - 1 (C が A, B の中間にあるとき) z = C - 2 (C > A かつ C > B のとき) で得られるのではないか
1-2-3 : (1-1)*17*16 + (2-2)*16 + (3-2) - 1 = 0
5-4-3 : (5-1)*17*16 + (4-1)*16 + 3 - 1 = 1138 5-4-4 : この組合せナシ 5-4-5 : この組合せナシ 5-4-6 : (5-1)*17*16 + (4-1)*16 + (6-2) - 1 = 1139
10-12-9 : (10-1)*17*16 + (12-2)*16 + 9 - 1 = 2616 10-12-10: この組合せナシ 10-12-11: (10-1)*17*16 + (12-2)*16 + (11-1) - 1 = 2617 10-12-12: この組合せナシ 10-12-13: (10-1)*17*16 + (12-2)*16 + (13-2) - 1 = 2618
18-17-16: (18-1) * 17 * 16 + (17-1) * 16 + 16 - 1 = 4895 = 18*17*16 - 1 こんなものでどうでしょうか。
|
|
|
3連複ではインデックスが付けられるとしますと、ABCの順番の組み合わせは6通 り、即ち3連複のインデクスの6倍を用意すればと思います。なを ABC、ACB、BA C、BCA、CAB、CBAです。 |
|
タイトル | : Re: 3連単のインデックス |
記事No | : 356 |
投稿日 | : 2011/12/15(Thu) 17:13 |
投稿者 | : みっち |
|
夜更しさんありがとうございます。 試してみます。
HRPTV5Cさん、ありがとうございます。 |
|
タイトル | : Re: 3連単のインデックス |
記事No | : 363 |
投稿日 | : 2011/12/28(Wed) 12:50 |
投稿者 | : みら丸 |
|
こんな考え方ではいかがでしょうか。
1着固定で全組合せを考えると (頭数ー1)×(頭数ー2)通りの組合せがあります。 よって、1着馬の馬番が確定すれば、その馬番の中の先頭番目 の組合せ(例えば■−1−2)の前に (1着馬の馬番ー1)×(頭数ー1)×(頭数ー2)通り の組合せが存在しています。
次に、1・2着固定で考えると、各組には(頭数ー2)通りの組合せがありま す。 なので、1着固定の中だけで2着馬位置の先頭番目の組合せの前に 1着馬の馬番<2着馬の馬番なら (頭数ー2)×(2着馬の馬番ー2)通り 1着馬の馬番>2着馬の馬番なら (頭数ー2)×(2着馬の馬番ー1)通り の組合せが存在します。
最後に、3着馬の馬番の前には原則として (3着馬の馬番ー1)通りの組合せ数が存在しますが 1着馬の馬番や2着馬の馬番が、それよりも小さい場合には、3着馬の 位置にその馬番は存在しないので 1着馬の馬番<3着馬の馬番なら (3着馬の馬番ー1)−1通り さらに 2着馬の馬番<3着馬の馬番なら (3着馬の馬番ー1)−1通り
この3種類を合計すれば位置が出るんではないかと・・・
組合せ位置 = (馬番1 - 1) * (頭数 - 1) * (頭数 - 2)
If 馬番1 < 馬番2 Then 組合せ位置 = 組合せ位置 + (馬番2 - 2) * (頭数 - 2) Else 組合せ位置 = 組合せ位置 + (馬番2 - 1) * (頭数 - 2) End If
組合せ位置 = 組合せ位置 + (馬番3 - 1) If 馬番1 < 馬番3 Then 組合せ位置 = 組合せ位置 - 1 If 馬番2 < 馬番3 Then 組合せ位置 = 組合せ位置 - 1 |
|
|
|
copyright ©2007 JRA SYSTEM SERVICE CO.,LTD. All Rights Reserved.
|
|
|