キャラメリック・バウト・オンライン・オフライン会

いろいろと仕事や作業の忙しかったところ、一段落したところで、「きゃらばと!オンライン」関連にて、仙台の知り合い宅へ遊びに行っていました。

仙台へ旅行ということで、一日は松島観光、一日はまったりと身内遊びして、騒ぎながら楽しんだ一泊二日の旅行でした。

詳細は関係者向け専用に後日公開する予定です。

問題)
 カードの集合Uのうち、属性Aを持つものをX枚、属性Bを持つものをY枚、属性Cを持つものを(30−X−Y)枚取り出し、30枚のカードの束を作る。
 (1)この問題の欠点を指摘し、妥当な解決案を示せ。
 (2)上記を実現するアルゴリズムのうち、後戻りがないものを示せ。

 この問題についても、関係者向け専用の詳細レポートの中で解答を示します。他に知りたい人がいたら直接ご連絡いただくか、blogにコメントください(ただし、レポート記述完了後の対応になります)。

タグ: , ,

コメント / トラックバック1件

  1. 菅野たくみ より:

    レポート書き終わったんで、答えを示しておきます。

    1:属性の重複が考慮されていないこと。属性A/B/Cの排他性については、何も言ってない。

     解決方法は、属性が重複したカードについては、重複した属性のいずれかから選択し直す。
     例えば、「属性Aかつ属性B」のカードを属性A、属性Bからそれぞれ選択して重複した場合、重複排除したカードは属性Aまたは属性Bのカードから選択する。

    2:次のアルゴリズムによる。ただし、示された問題については、n=1,2,3とし、an=bnの条件で考える。

     (1) 全てのグループについて、以下の処理を行う。
      – グループnの枚数の範囲を[an, bn]とする。
      – グループnのフラグが立っているカードの中からランダムに an 枚選ぶ。
      – ここで、他のグループで選択されたカードと重複したカードの枚数を cn とする。
     (2) (1)の結果を重複排除し、結合する。
     (3) カードリストから(2)を取り除く
     (4) 全てのグループについて、以下の処理を行う。
      – グループnのフラグが立っているカードの中からランダムに bn – an + cn 枚選ぶ。
     (5) (4)の結果を重複排除し、結合する。
     (6) (5)の中から 30 – ((2)の枚数)枚ランダムに選び、(2)と合わせてデッキとする。

コメントをどうぞ