• 締切済み

バドミントンの対戦表をエクセルで作りたいのですが

バドミントンのダブルスの対戦表をエクセルで作ろうと思っているのですが、どうやって作ったらいいのかわからず、どなたか知恵を貸していただけないでしょうか? バドミントンのダブルスは1コート4人で行われるため、4人でバドミントンを行ったりする場合は簡単に組合せが作れます。4人に1番~4番の番号を振り分けると、1番と2番がペアで3番と4番がペア。その次は1番と3番がペアで2番と4番がペア。というふうになります。 しかし、それが例えば2コート、10人でダブルスをやろうとすると、8人がコートに入り、2人が休みになります。 同じペアで組まないようにしたいので、全員が違うペアと組んで試合をするには、何試合も試合を行わなければいけなくて、その組み合わせを考えるのが自力ではできませんでした。 3コートで14人とかなってくるともっと複雑で、どうやって組み合わせを考えたらいいかわかりません。 プログラムに詳しい方がおりましたら、どうすればエクセルで計算できるか、ご助力願えませんでしょうか。お願い致します。

みんなの回答

回答No.3

エクセルである必要はあるのでしょうか? 完全にランダムでいいのであれば、以下のサイトが携帯からも見えるようですので、コートサイドで使用できると思います。 http://sports.geocities.jp/doubles_pair_site/ ただ、人数によって同じペアと組むことがあったり、全員とペアを組めなかったりしてます。 スマホをお持ちであれば、今はアプリがいくつかあるようです。

参考URL:
http://sports.geocities.jp/doubles_pair_site/
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

単純な組合せを作るなら以下のマクロで作れます。 Sub 組合作成(ByVal 人数 As Long) Dim 表 As Worksheet Dim 人1&, 人2&, 人3&, 人4&, 列&, 行&, 終& Set 表 = ThisWorkbook.Worksheets(1) '第1シートに記録する 表.Cells.ClearContents If 人数 < 4 Then Exit Sub '4人未満なら何もしない 終 = 人数 - 1 For 人1 = 1 To 終   For 人2 = 人1 + 1 To 人数     行 = 行 + 1     列 = 1     For 人3 = 人1 + 1 To 人数       If 人3 <> 人2 Then         For 人4 = 人3 + 1 To 人数           If 人4 <> 人2 Then             If 列 = 1 Then               表.Cells(行, 列).NumberFormat = "@"               表.Cells(行, 列) = CStr(人1) & "-" & CStr(人2)             End If             列 = 列 + 1             表.Cells(行, 列).NumberFormat = "@"             表.Cells(行, 列) = CStr(人3) & "-" & CStr(人4)           End If         Next       End If     Next   Next Next End Sub 厄介なのが、コートと対戦ペアの割り当てです。現在、考慮中です。

すると、全ての回答が全文表示されます。
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

ちょっと難しい問題だと思います。 結論から言うと、2コート10人ダブルスの場合は、全員が他の人と必ず1回だけペアになるような組み合わせは存在しません。 どのような組み合わせを考えても、必ず同じペアになる2人が出てくるかまたはペアにならない2人が出てきます。 理由を簡単に説明すると、 1人がペアを組むのは残り9人ですから、試合をする延べ人数は10×9=90人 1試合4人ですから、試合数は90÷4=22.5 0.5の試合というのはありえないですからそういう組み合わせは不可能ということになります。 なお、2コート9人や3コート13人のように1人だけ休みの場合は存在します。 同じペアにならない組み合わせでの最大の試合数は22試合、 必ず1回はペアになる組み合わせでの最小の試合数は24試合(1回に2試合するとして)、 また、10人が平等に同じ回数だけ試合をするというなら20試合(1人8試合)か30試合(1人12試合) ですが、その組み合わせは無数にあります。 実際には、その中でなるべく同じ人との対戦が少なくなる(1~2回、24,30試合の場合は2~3回)ような組み合わせが理想だと思います。 これはプログラミングというより数学の組み合わせ理論の問題です。 詳しく知りたい場合はいったん締め切って問題を整理してから、学問&教育の数学カテゴリーで質問してみてはどうでしょうか。

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • MFC-J6583CDWプリンターにて、純正インクを交換した後、4色ともインク量を検知できない問題が発生。シアンを交換後、残りの3色が未検知状態のままであり、FAQに従って対処を試みるも黒色以外のインクが認識されない。
  • 純正インク使用のMFC-J6583CDWで、全色インク量検知不能問題が発生。FAQを参考に残量確認や押し操作を試行し、黒色のみ認識。他の3色は未だ検知できない。正しい対応策を探している。
  • Brother製MFC-J6583CDWで、シアンインク交換後に全色インク量が検知されないトラブル。FAQに基づいて対策を行うも、黒色だけしか検知されず、他の色は未だ認識不能。どのように対応すべきかを相談中。
回答を見る

専門家に質問してみよう