JRA公式競馬データ配信サービス JRA-VAN Data Lab.

JRA-VAN DataLab.

競馬ソフト開発コーナー

プログラミング質問広場

本掲示板は、プログラミングに関する情報を作者様同士で共有・議論していただく場として用意いたしました。
JV-Link、JV-Dataに直接関連しない(一般論としてのプログラミング方法やAPI・メソッドの利用法などの)スレッドはこちらに立ててください。

一括表示 リストに戻る
タイトル3連単のインデックス
記事No353
投稿日: 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連単のインデックス
記事No354
投稿日: 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
こんなものでどうでしょうか。


タイトルRe: 3連単のインデックス
記事No355
投稿日: 2011/12/15(Thu) 09:04
投稿者HRPTV5C   <nba01272@nifty.com>
参照先http://hrptv5c.com/
3連複ではインデックスが付けられるとしますと、ABCの順番の組み合わせは6通
り、即ち3連複のインデクスの6倍を用意すればと思います。なを ABC、ACB、BA
C、BCA、CAB、CBAです。

タイトルRe: 3連単のインデックス
記事No356
投稿日: 2011/12/15(Thu) 17:13
投稿者みっち
夜更しさんありがとうございます。
試してみます。

HRPTV5Cさん、ありがとうございます。

タイトルRe: 3連単のインデックス
記事No363
投稿日: 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

ウィンドウを閉じる