• 締切済み

テニス大会のタイムテーブルのプログラミングについて

ki073の回答

  • ki073
  • ベストアンサー率77% (491/634)
回答No.19

# MatchScheduleID_Player_tableを書き換え s.t. update_MatchScheduleID_Player_table{ms in MatchScheduleIDSet, py in PlayerSet}: sum{mp in MatchPairIDSet : MatchPairID_Player[mp, py]=1}MatchScheduleID_MatchPairID_table[ms,mp]=MatchScheduleID_Player_table[ms, py]; # ABに試合ができないPlayerの処理 s.t. avoidAB{ms in MatchScheduleIDAB, py in AvoidABPlayerSet}: MatchScheduleID_Player_table[ms ,py]=0; # MatchScheduleID_Group2_tableを書き換え s.t. update_MatchScheduleID_Group2_table{ms in MatchScheduleIDSet, (group1, group2) in GroupPairofMatches}: sum{mp in MatchPairIDSet: MatchPairID_Group2[mp, group1, group2]=1}MatchScheduleID_MatchPairID_table[ms,mp]=MatchScheduleID_Group2_table[ms, group1, group2]; s.t. uniq_group{ms in MatchScheduleIDSet}: sum{(group1, group2) in GroupPairofMatches}MatchScheduleID_Group2_table[ms, group1, group2]=1; # 同じグループの組み合わせが3回連続しない 夜は含めない s.t. group_exception{ms in group_exception3, (group1, group2) in GroupPairofMatches}: sum{k in 0..2}MatchScheduleID_Group2_table[ms-k, group1, group2]<=2; # 連続した9試合中1試合以下であること s.t. one_or_zero_in_9_matches{ms in check_9_matches, py in PlayerSet}: sum{k in 0..8}MatchScheduleID_Player_table[ms-k, py]<=1; # 連続した8試合中1試合以下であること s.t. one_or_zero_in_8_matches{ms in check_8_matches, py in PlayerSet}: sum{k in 0..7}MatchScheduleID_Player_table[ms-k, py]<=1; # 連続した7試合中1試合以下であること s.t. one_or_zero_in_7_matches{ms in check_7_matches, py in PlayerSet}: sum{k in 0..6}MatchScheduleID_Player_table[ms-k, py]<=1; solve; # 出力 for{(group1, group2) in GroupPairofMatches} {printf "# %s : %s %s 試合\n", group1, group2, sum{mp in MatchPairIDSet}MatchPairID_Group2[mp, group1, group2];} for{ms in MatchScheduleIDSet} {for {mp in MatchPairIDSet : MatchScheduleID_MatchPairID_table[ms, mp]=1} {printf "%s %s %s %s %s %s (%s : %s) %s\n", ms, mp, Player1[mp], Player2[mp], Player3[mp], Player4[mp], AssignedGroup[Player1[mp]], AssignedGroup[Player3[mp]], if mp in avoidABMatchPairIDSet then " 朝ABを避ける試合" else "";} }

関連するQ&A

  • スポーツ大会のタイムテーブル作成について

    テニス大会のタイムテーブルに関する 乱数表(プログラミング)作成をお願いできないかと思い相談致しました。 テニス大会開催に関して、 下記の比較的、複雑な条件下で大会を運営しているゆえに、試合投入の順番(タイムテーブル)を組む仕事に困っています。何通りも組み合わせを試しては、詰んでやり直しの繰り返しで、毎度困らされています。 対戦をルールに合わせて順番に並べる、 簡素なプログラムで構わないので是非作っていただけるとありがたいです。 ---------条件-------------- (1)「3日」で完了する「ダブルス」のバドミントン大会 総人数は55~70名ほどが、「4つの班」 に分けられている。 各班およそ15名~17名程度でほぼ均等に振り分けらる。 ここでは(W 班、X班、Y班、Z班とする) (2)班内でペアを作り、他班のペアとダブルスの試合する。 一人あたりの試合数がおおよそ6試合前後になるように私が組んで いるため、試合数は個々にばらつきがある。(3日間の総試合数は75~100試合程度) レベル別に近い者同士がペアを組んで、 他の班のおおよそ同レベルの相手と試合できるようにしている。 ゆえに対戦内容は(班内でのペアと、 その対戦相手の組み合わせ)は予め決まっていて かつ、各々の試合内容は、 大会内での他の試合の結果に左右されて変動することはない。 (3)コートについては、 頃合いをみて運営スタッフが空いたコートに試合をコールする。 ゆえに最大のコート数やコート番号はここでは無視してよい。 (4)大会プログラムは1日目、2日目、3日目ともに以下のような予定で行う。 朝A (2~3試合) 朝B (7~8試合) 朝C (3~4試合) 昼A (2~3試合) 昼B (9~12試合) 夜A (2試合) (5)3日目の全体の試合数は、1・ 2日目のどちらよりも少ない試合数とする。 また、1日目と2日目の試合数の差は最大3試合までとする。 (6)、空いたコートから次の試合を順次入れてゆく。 朝B・昼Bの試合は試合を入れる順番を決めなければならない。 (例、朝A、朝B-1、朝B-2、朝B-3・・・・ という順で行ってゆく。昼Aから昼B-1への進行も同じ) ただし朝A、昼A、夜Aの試合は複数同時に開始させるため、 開始前はコートがすべて空くまで待機する。 (7)1人が一日分として試合できる数は1~3試合である。 0試合と4試合以上は不可。 (8)朝A,Bでの試合を禁止される人もいるため、 すべての人に確認をとる。 (9)一日分で3試合行うことがが禁止される人もいるため、 すべての人に確認を取る。 (10)同一人物における試合間隔は、「自分の入っていない6試合」 を空けなければ次の試合に入ってはならない。朝A、昼A、夜A、 の直前の待機時間は試合間隔にカウントしない。 (11)「朝A、昼A、夜A」 の試合は一斉にスタートするため、(10) の試合間隔を計算する際には、複数試合があっても、まとめて1試合分で考える。 例・・(10)と(11)より (朝A)で試合に入った人が次に試合に参加できるのは、(朝B-7)から。 (昼A)で試合に入った人が次に試合に参加できるのは、(昼B-7)から。 (朝Cの最後)で試合に入った人が次に試合に参加できるのは、(昼B-6)から。 (12)夜Aで対戦を行うペアとその対戦相手ペアの8名は( 夜Aは2試合あるので合計8名)は初めから決まっていて、 固定である。 順序配置・内容は変動しない。ただし、 個々人の制限はカウント対象である。 例えば、夜Aに出場する人が、(7)や(9) の制限に該当する可能性もあるし、(10)の6試合間隔など、 他の条件もその通りに守らねばならない。 (13)(X班のペア vs Y班のペア)による対戦が3つ以上連続してはならない。 これは、(W班,X班,Y班,Z班) のすべての班同士についても同様とする。 ただし夜Aの試合については考慮しない (14) X班全体で見たときに、 Y班のペアとの対戦が一日分の試合の半分以上を占めてはならない 。これは、(W班,X班,Y班,Z班) のすべての班同士についても同様とする。 (15)もし3日間の大会ではなく、 2日間の大会だと総試合数は60試合程度になる。 その場合、2日目の試合数が1日目より多くなってはいけない。 ----条件は以上---- ●まとめ● 「入力する情報」 ・班名(W、X、Y、Z班) ・出場者各々の名前(ペア2名 と、それに対応する、 対戦ペア2名)を(約80~100試合分) ・出場者各々の禁止事項の確認 「知りたい情報」 条件、ルールを満たしつつ、 ・1~3日目の、試合を入れる順番(3日間の大会のとき) を「すべてのパターン」ないしは「ランダムに1パターン」 での出力を求める。 ※人物名を省略して出力の例を書くと 【朝A】同時開始 X班(あ&い) vs Y班(さ&し) Y班(や&よ) vs Z班(な&に) W班(ぺ&び)vs Z班(わ&を) 【朝B-1】 W班(ぬ&ね)vs X班(う&え) 【朝B-2】 Z班(の&は) vs W班(ひ&ふ) という感じの 単純に投入の順序がわかればOKです ついでに 1~2日目の、試合を入れる順番(2日間の大会のとき) も求められる仕様もあれば、さらに助かります 長文失礼いたしました。 お返事いただけると幸いです。よろしくお願いいたします。

  • スポーツ大会のタイムテーブル作成について

    テニス大会のタイムテーブルに関する 乱数表(プログラミング)作成をお願いできないかと思い相談致しました。 テニス大会開催に関して、 下記の比較的、複雑な条件下で大会を運営しています。 そのため試合投入のスケジュール(順番)を組む仕事が手作業になり困っています。 簡素なプログラムで構わないのでなんでも是非お願いします。 ---------条件-------- (1)「3日」で完了する「ダブルス」のバドミントン大会 総人数は55~70名ほどが、あらかじめ「4つの班」 に分かれている。 各班およそ15名~17名程度でほぼ均等に振り分けられている。 ここでは(W 班、X班、Y班、Z班とする) (2)班内でペアを作り、他班のペアとダブルスの試合する。 行う試合の数はその人によって異なる。 一人あたりの試合数がおおよそ6試合前後になるように私が組んで いる。 (総試合数は75~100試合程度) レベル別に近い者同士がペアを組んで、 他の班のおおよそ同レベルの相手と試合できるように組んでいる。 つまり、対戦内容は(班内でのペアと、 その対戦相手の組み合わせ)は予め決まっていて かつ、各々の試合内容は、 大会内での他の試合の結果に左右されて変動することはない。 (3)コートについては、 頃合いをみて運営スタッフが空いたコートに試合をコールする。 ゆえに最大のコート数やコート番号はここでは無視してよい。 (4)大会プログラムは1日目、2日目、3日目ともに 朝A (2~3試合) 朝B (7~8試合) 朝C (3~4試合) 昼A (2~3試合) 昼B (9~12試合) 夜A (2試合) 以上のような予定で行う。 (5)3日目の全体の試合数は、1・ 2日目のどちらよりも少ない試合数とする。 また、1日目と2日目の試合数の差は最大3試合までとする。 (6)試合が終わり、空いたコートから次の試合を順次入れてゆく 朝B・昼Bの試合は、 それぞれについて試合を入れる順番を決めなければならない。 (例、朝A、朝B-1、朝B-2、朝B-3・・・・ という順に行う。昼も同様) ただし朝A、昼A、夜Aの試合は複数同時に開始させるため、 開始前はコートがすべて空くまで待機する。 (7)1人が一日分として試合できる数は1~3試合である。 0試合と4試合以上は不可。 (8)朝A,Bでの試合を禁止される人もいるため、 すべての人に確認をとる。 (9)一日分で3試合行うことがが禁止される人もいるため、 すべての人に確認を取る。 (10)同一人物における試合間隔は、「自分の入っていない6試合」 を空けなければ次の試合に入ってはならない。 また朝A、昼A、夜A、 の直前の待機時間は試合間隔にカウントしない。 (11)「朝A、昼A、夜A」 の試合は一斉にスタートするため、(10) の試合間隔を計算する際には、複数試合があっても、まとめて1試合分で考える。 例・・(10)と(11)より (朝A)で試合に入った人が次に試合に参加できるのは、(朝B-7)から。 (昼A)で試合に入った人が次に試合に参加できるのは、(昼B-7)から。 (朝Cの最後)で試合に入った人が次に試合に参加できるのは、(昼B-6)から。 (12)夜Aで対戦を行うペアとその対戦相手ペアの8名は( 夜Aは2試合あるので合計8名)は初めから決まっていて、 固定である。 配置・内容は変動しない。ただし、 個々人の制限はカウント対象である。 例えば、夜Aに出場する人が、(7)や(9) の制限に該当する可能性もあるし、(10)の6試合間隔など、 他の条件もその通りに守らねばならない。 (13)(X班のペア vs Y班のペア)による対戦が3つ以上連続してはならない。 またこれは、(W班,X班,Y班,Z班) のすべての班同士についても同様とする。 ただし夜Aの試合については考慮しない (14) X班全体で見たときに、 Y班のペアとの対戦が一日分の試合の半分以上を占めてはならない 。 またこれは、(W班,X班,Y班,Z班) のすべての班同士についても同様とする。 (15)もし3日間の大会ではなく、 2日間の大会だと総試合数は60試合程度になる。 その場合、2日目の試合数が1日目より多くなってはいけない。 ----条件は以上です---- ●まとめ● 「入力する情報」 ・班名(W、X、Y、Z班) ・出場者各々の名前(ペア2名 と、それに対応する、 対戦ペア2名)を(約80~100試合分) ・夜A以外の、順序固定試合の有無 ・出場者各々の禁止事項の確認 「知りたい情報」 条件、ルールを満たしつつ、 ・1~3日目の、試合を入れる順番(3日間の大会のとき) を「すべてのパターン」ないしは「ランダムに1パターン」 での出力を求める。 ※人物名を省略して例を書くと 【朝A】同時開始 X班(あ&い) vs Y班(さ&し) Y班(や&よ) vs Z班(な&に) W班(ぺ&び)vs Z班(わ&を) 【朝B-1】 W班(ぬ&ね)vs X班(う&え) 【朝B-2】 Z班(の&は) vs W班(ひ&ふ) ・ ・ という感じの 単純な投入の順番がわかればOKです。 ついでに 1~2日目の、試合を入れる順番(2日間の大会のとき) も求められる仕様もあれば、さらに助かります 長文失礼いたしました。 お返事いただけると幸いです。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • テニス大会の組合せの作り方・その2

    先程テニス大会の組合せの作り方を質問し、matumotokさんから条件が合わないとの答えを頂きました。有難うございます。そこで改めてお尋ねします。 次のような条件のテニス大会の組合せの作り方を教えてください。 1.参加者は、10名で、各自ダブルスを4試合します。 2.ペアは、その都度、異なる人と組みます。 3.対戦相手は、出来るだけ異なる組合せとして、同じ対戦相手は2回までとします。 以上のような条件で、組合せの作り方を教えてください。よろしくお願いします。

  • テニス大会の組合せの作り方その2

    先程、テニス大会の組合せの作り方を質問しました。 1.10人参加で各自4試合 2.試合はダブルスで、同じペアは組まない 3.相手も毎回違うペア 以上の条件でしたが、[matunatoko]さんから、13人以上が必要と教えていただきました。有難うございました。 そこで、再度質問させていただきます。 3の毎回違うペアとの組合せが無理ならば、出来るだけ違う相手と対戦するような組合せの作り方を教えてください。よろしくお願いします。

  • テニス大会の組合せの作り方

    仲間内のテニス大会の幹事をしています。 以下の条件の組合せの作り方を教えてください。 1.参加者は10名で、各自4試合します。 2.ペアはその都度変えて、同じ人とは2度は組みません。 3.相手もその都度変えて、同じ相手とは2度は対戦しません。 以上です。よろしくお願いします。

  • 中学ソフトテニス部 新人戦と一年生大会

    中学からソフトテニスを始めた中1男子(後衛)です。来週市の新人戦と一年生大会があり、選手が発表されました。僕たちペアは部活以外でも自主練習をしたり一年生大会に向けて頑張ってきたのですが残念ながら一年生大会には選ばれませんでした。中1ペアなのに先輩たちと同じ新人戦に出ることになりました。一年生大会に出られない一年は僕たちのペアだけです。練習もまじめにしているし校内試合でもちゃんと勝っていたのに一年生大会に出られないことがとてもショックです。入部したてのころ顧問の先生が「9月にある一年生大会には全員が出ます。」と言っていたのに。新人戦はどこの学校もほとんどが2年生みたいです。総体の時の先輩たちの試合を見る限りソフトテニスを始めて3か月の僕たちが太刀打ちできるとは思えません。でも僕のペアはとてもポジティブで「1年の中で一番強いから新人戦の方に選ばれたんだよ!」などと言っています。確かに僕のペアは1年の中では一番上手いと思うし、そう言われています。でも僕はそうではありません。僕は胃が痛くなるほど不安です。初めての公式戦(一年生大会)を楽しみにしていたのに…と愚痴になってしまいましたがここで質問です。一年生大会には出場できる枠が決まっているのですか?そして選ばれる基準は何でしょうか?(僕の学校の一年は14人(7ペア)でそのうち12人(6ペア)が一年生大会に出場します。 選ばれる基準については顧問によって違うと思いますが、直接顧問には聞きにくいので皆さんの学校はどんな感じなのか教えてください。

  • テニス大会ダブルスの乱数表の作成をお願いしたい

    テニス大会開催のため、プレーヤーの組み合わせに乱数表を使うことになり、過去の質問・回答を検索しテニス乱数表の作成法を2件見つけたのですが、1件は同じプレーヤーの組み合わせ(ペア)が複数組できてしまい、もう1件は一人当たりのゲーム数が同数にならない(一定の試合数で、ある人は2ゲーム、ある人は5ゲームなどバラつきが出る)ことがわかりました。 そこで以下の条件で乱数表の作成をお願いしたいのですが。 1.1日で完了するダブルスのテニス大会 2.参加者(プレーヤー)は、10-30人程度 3.コートは2面を並行使用の予定なので、一人が同時に2面に入らない 4.全員が一人あたり4ゲーム行う 5.全員が4ゲームともそれぞれ別の人とペアを組む(同じペアを複数回作らない) 6.対戦相手はそれ以前のゲームと同じ人でも構わない(5.があるので同じペアとの再戦はない) よろしくお願いします。

  • テニスのダブルス8人での対戦組合せ

    ダブルスのテニス乱数表をネットで入手したのですが、 組むペアについては【条件1】を満たしているのですが、 対戦相手については【条件2】を満たしているものが無く、 自分で試行錯誤して作成してもなかなか納得のいくものが出来ません。 【条件1】:自分以外の人と1回だけペアを組む 【条件2】:自分以外の人と必ず2回対戦する 1の人を軸に【条件1】及び【条件2】を満たす対戦表を作りましたが、 その後がなかなか難しくて完成には至りません。 合計試合数は14(7×8÷2÷2)になります。 12-34  13-78 23-15 14-67 24-?? 34-12 15-23 25-?? 35-?? 45-17 16-28 26-?? 36-?? 46-?? 56-18 17-45 27-?? 37-?? 47-?? 57-?? 67-14 18-56 28-16 38-?? 48-?? 58-?? 68-?? 78-13 このような対戦表を作成するのに お詳しい方のご教示を頂ければ幸いです。

  • テニスのさいたま市民大会(シングルス)について

    テニスのさいたま市民大会(シングルス)について 出場してみたいと思うのですが、男子A、男子B、男子Cとわかれていて それぞれに出場する方々のレベルがどの程度かいまいちわかりません。 私は経験も浅い上に大会も初めてなので当然男子Cなのはわかっていますが 実際のところ、A、B、Cの棲み分けはどんな感じなのでしょうか? 出場経験のある方がいましたら教えてください。(同規模であれば他の大会でもいいので) 私はスクールに通っているのでスクール生、コーチ等にたとえて頂けるとわかりやすいです。 よろしくお願いします。

  • テニス・・

    テニス・・ 私は半年ほど前から 数歳年下のテニススクールの同じクラスの女の子と草トーナメントや市民大会にでるようになりました。だいたい月に2回ほどは 一緒にでかけていたので、私も彼女も正規ペアのつもりでいました。 実は私は たまにいろんな人といろんな試合にエントリーしていたのです。(草トーに限る) それというのも 私は誘われたら断らない主義なので 私の得意のサイドに入らせてくれるペアの人であれば、日にちさえ合えばOKしていたんです。 で、市民大会に関しては必ずその正規ペアの子に頼んで 休みをとってもらって一緒にでてもらっていました。草トーナメントに関しても、平日のほうが休みをとれやすいらしいので、私が色々探して、よく一緒にでていたんですが、 先日、知り合いのペアが解消してしまい、市民大会の申し込みギリギリのところで私にでてもらえないかどうか打診されたのです。 私は最初、自分の得意なサイドに入れない条件なので、かなり渋っていたんですが、つきあいもあり、一度だけと思って、エントリーしたら かなりいいところまでいけたのです。 さて、問題はそれからです。 たしかにその大会で想像以上にいい結果がでたのはうれしいのですが、私はそれまでずっとその正規ペアの子と市民大会で結果を出すためにがんばってきたので、結果がでたからといって、その人とペアをこれからも組もうとは思っていないのです。 なにより、結果はでたけれど、私ががんばったというより、ペアの人が調子がよかっただけで。 私の得意サイドではないので、もしでるなら、今度は一つレベルが上の試合にエントリーしなくてはいけないのですが、私が活躍できるとは到底思えません。 ドロー運もかなりあった試合でしたので・・ その人は 前の人より 私の方が組みやすかったらしく(←単純に私が腰が低いからだとおもうのですが)よい成績をとれて、すごく喜んでくれたのですが、やっぱり今までのつきあいも大事だし、私が今までがんばってこれたのも、最終的には一番大事な大会では、その数歳年下の子といい結果を出したい、と思っていたからなんです。 なんだかんだと短い間にかなり試合に出ていて、下の級ではありますが、優勝経験も何回かありますし、今度こそ市民大会で結果を出そうとお互い思っていたところなんです。 (その問題の大会は、私が申し込み期限を勘違いしていたので、もう申し込めないと思って、次の試合に二人ででようと思っていたのです。急にその子は休みがとれないし・・・) 二人で一緒のウェアを着たりしているし、その大会の後も、その正規ペアの子と草トーに出続けているののも折に触れて、なんとなく話をしたりしていたので、その人にはわかってもらえるかなあ、と思っていたのですが、このあいだ 次の試合(同じ市の大会)一緒にでてくれない?といわれて、思わず はい、と答えてしまいました。なんといって断ったら、いいかわからなくて・・・ちなみに正規ペアの子はその日は休みがとれないのです。 まだエントリーは正式にはしていないのですが、ほんとに困っています。(その人も、私が相当迷っているのは感じているとは思います。だからエントリーをまだしていないのだと思います。) とりとめのない話でいったい何がいいたいのかわからないと思いますが。。 前回の試合で たいした成績が残らなければ 自然消滅になっていたのに。。と、どうしたらいいのかわからない状態です。 自分が優柔不断すぎて、情けないです・・・ みなさんならどうしますか。