先週のチャレンジに対する解答は こちらをご覧ください
今週のチャレンジは@mst3kさんによって提出されました!
アメリカの競馬と言えばケンタッキーダービーが最も有名ですが、マンハッタンから車で1時間ほど離れた距離にあるベルモントパークでもベルモントステークス が毎年開催されます。日本のみなさんにはあまり馴染みがないかもしれませんが、これはケンタッキーダービー、プリークネスステークスとともに アメリカクラシック三冠と呼ばれる5月から6月にかけて開催される3歳馬限定の最も有名なレースの一つです。今年のレースは昨日終わってしまいましたが、競走馬の順位の組み合わせを分析するワークフローに挑戦してみましょう!
4頭の馬によるレース が行われています。レースの順位について考えられるすべての可能な組み合わせをみつけましょう。レース内にサリーという名前の *異なる* マスタングが 2 頭いることに注意してください。
エクストラクレジット: 馬が 4 頭ではなく 5 頭の場合、可能な結果はいくつありますか?馬の数が n である場合、その数は一般化できますか?
この辺の処理は業務でも割とよく使うのですが、馬がN頭の時の全組み合わせを作るのは面倒そうですね。
N頭の時は手を抜いて、Nの階乗を求める様にしてみました。英語版でKajitaniさんが実際の組み合わせも求めていたスポイラをちらっと見ましたが、具体的なやり方はイメージが湧いていないので、日本語版の投稿を期待しています。
@AkimasaKajitani さん
スポイラにも書きましたが、10頭立てだと5040ケースと出てきますが、10!だと360万ケースになると思います。マクロで組むには難しそうで、ぱっと思いつきませんが…。
N頭で一般化できるフローを作れないか考えましたが、早々に諦めました。笑
いつものように力技です。
お恥ずかしいところをお見せしましたが、一般化版で全組み合わせ算出できました!
9頭で20秒ちょいですが、10頭になると4分22秒もかかりました・・・(11以上は試してません・・・)。
ちなみに、1の場合は答え出ないので、2頭以上からの対応になっています。
通常マクロ:
IterativeMacro(繰り返しマクロ):
まぁ、現実解としてはnPrの公式で出した方が良いですね・・・。
@AkimasaKajitani さん
さすがですね、うまいこと処理されていますね。勉強になりました。
Kajitaniさんのマクロをコピペした上記Workflowを皆さんの参照用として載せておきます。