【SwiftUI】ダビスタの完璧な配合アプリを作成してみた(面白い配合まで)
最近switchのダビスタにはまりました。
競馬は馬券を買うことはなかったのですが、よくテレビでみていました。
今回ダビスタの最新作が出るということなので、ダビスタデビューしました!
買ってからはもうずっっと、良い配合のことを調べています。
が。。
種付けの作業が面倒臭い。。
オスの馬150頭くらいいるので、一つずつ見ていくのが本当に時間がかかる。。
最初は楽しかったんですけど、どんどんどうでもよくなってきちゃいました笑
このままでは僕の大事な牝馬達に悪い!!とういことで、完璧な配合一覧を取得できるアプリを作成しました。
(そういう風なアプリは探せばあるのかもしれないが、それすら探すのが面倒くさくなってきたので、気合入れるために作ることにしました。。)
今回は完璧な配合の馬だけ探してくるアプリです。
完璧な配合の説明はこちらを参考にしました!。
https://www.youtube.com/watch?v=4HCZHn661kg
いろいろなサイトを見たけど、このyoutubeの動画が一番解りやすかったです。
つまりオスの馬150頭の中から、一番良い感じになる馬一頭と
自分の牧場の牝馬の組み合わせを選べば良いってことです。
例えばこの様な系統の牝馬で完璧な配合を目指すとすると
この様に入力して、左下に小さくある計算するボタンを押すと
この様に完璧な配合となる組み合わせを表示してくれます!
(今回は早くダビスタに戻りたかったので、動けば良いやと思って作りました。。)
作り方は、まず全部のオスの馬の系統が書いてあるjsonファイルを作りました。
これが一番辛かったです。。
この様な感じで全部。。
faが父
moが毋
fa_faが父の父(父の方のおじいちゃん)
fa_moが父の母(父の方のあばあちゃん)
ma_faが母の父(母の方のおじいちゃん)
・
・
・
という風に3世代まで書きます
この次はこのオス馬の中から、面白い配合の馬を見つけます。
面白い配合じゃないと完璧な配合にはなりません。
面白い配合というのは、
おじいちゃんとおばあちゃん達の父と母達の系統が7種類ある状態です。
先ほどの写真で言うと
ここの赤い部分が7種類あれば良いと言うことです。
ちなみにここのNaとかが系統です。
詳しくはこちらを参考にしてください
https://gamerch.com/derby/entry/208599
上の写真の場合、ディープインパクトは7種類あるので、面白い配合なのですが、
ロードカナリアの場合6種類しかないので、完璧な配合が作れません。
この面白い配合を確認するコードがこちらです
このcalculateOmoshiro関数で面白い配合の馬をチョイスしていきます。
62行目に出てくるformulationsと言うのが先ほどのオス馬のjsonファイルです。
for文で1頭ずつ確認していきます。
84行目で1頭ずつ面白い配合に必要な系統を集めて、
checkOmoshiro関数に渡しています。
checkOmoshiro関数はこんな感じです。
calculateOmoshiro関数から受け取った8個の系統を順番に見ていっています。
受け取った系統をa, b, c, d, e, f, g, aだとすると、
a-b, a-c, a-d, a-e, a-f, a-g, a-a,
b-c, b-d, b-e, b-f, b-g, b-a,
c-d, c-e, c-f, c-g, c-a,
d-e, d-f, d-g, d-a,
e-f, e-g, e-a,
f-g, f-a,
g-a
と言う風に確認して行っています。
そして文字が一緒だったらcheckCountに数字が一つプラスされます。
上記の場合、a-aのパターンしかないのでcheckCountは1です。
このcheckCountが2未満なら面白い配合なのでtrueを返しています。
疲れたので今回はここまでにします。。
次に見事な配合をどうやってチェックしたか書こうと思います。
(かなり強引にやりました。なのでめちゃめちゃ処理遅いです。。)