ゲーム情報用の Google スプレッドシートがあります。モンスター情報用とチーム用の 2 枚のシートが含まれています。
モンスター情報シートには、モンスターの攻撃力、防御力、マナコストが記載されています。召喚できるモンスターのデータベースのようなものだ。
チーム シートは次のことを行います。
- 現在持っているマナの量を尋ねます。
- 召喚できる最大 5 体のモンスターのリストを計算します (5 体未満の場合もあります)。
- 各モンスターには独自のマナ コストがあるため、マナ コストの合計がポイント 1 で与えたマナの量を超えてはなりません。
- 集計されたリストから、合計攻撃値が最も高いチームが得られるはずです。モンスターは何体召喚しても構いません。ただし、各モンスターは2回召喚できない。
SQLステートメントを利用できるように、 query() 関数を使用することを考えていました。(表形式のリストを直接取得できることを願っています)
Sample: Monster Info
A B C D
1 Monster Attack Defense Cost
2 MonA 1200 1200 35
3 MonB 1400 1300 50
... ...
Sample: Team
A B C D
1 Mana 120
2
3 Attack Team
4 Monster Attack Cost Total Attack
5 MonB 1400 50 1400
6 MonA 1200 35 2600
7 ... ...
「チーム」シートにこれらの式があります
- A5: =query('Monster Info'!$A$:$D,"SELECT A,B,D ORDER BY B DESC LIMIT 5")
- B5: =CONTINUE(A5, 1, 2)
- C5: =CONTINUE(A5, 1, 3)
- D5: =C5
- A6: =CONTINUE(A5, 2, 1)
- B6: =CONTINUE(A5, 2, 2)
- C6: =CONTINUE(A5, 2, 3)
- D6: =D5+C6
マナコストの考慮に関係なく、5つの最高の攻撃モンスターしか取得しません。攻撃値とマナ コスト値の両方を考慮するようにするにはどうすればよいですか? 次の例に示す別の問題があります。
Example: (simplified version, without defense value etc)
Monster Attack Cost
MonA 1400 50
MonB 1200 35
MonC 1100 30
MonD 900 25
MonE 500 20
MonF 400 15
MonG 350 10
MonH 250 5
マナが 160 の場合、明らかなチームは A+B+C+D+E (攻撃力 5100) です。
マナが150あればA+B+C+D+G(攻撃力4950)。
マナが140あればA+B+C+D(攻撃力4600)。
130 マナの場合、B+C+D+E+F (125 マナを使用して 4100 攻撃) または A+B+C+F (130 マナすべてを使用して 4100 攻撃) になります。
マナが120あればB+C+D+E+G(攻撃力4050)。
マナが110あればB+C+D+F+H(攻撃力3850)。
ご覧のとおり、結果には実際にはパターンはありません。
これに関する洞察を共有してくれる専門家はいますか?