編集:私は以前D&Dをプレイしたことがないので、最初にこの質問をしたとき、適切に調査していませんでした。このことをお詫び申し上げます。dnd5eのルールにできる限り忠実に回答を無効にする可能性のあるいくつかの編集を行っています。ごめんなさい。
最近のHot Network QuestionのD&Dファンは、魔術師が選択したスペルが可能性と一致するかどうかを判断するのに問題があるようです。
前書き
(これはすべて前述の質問ですでに説明されています)
魔術師は最初から2つのレベル1の呪文を知っています(レベル1): [1, 1]
ソーサラーがレベルを取得するたびに(レベル12、14、16、18、19、20を除く)、彼らは新しい呪文を習得します(必須)。
さらに、レベルアップするときに、(オプション)1つのスペルを別のスペルに置き換えることを選択できます。
学習して置き換えられる呪文は、有効な呪文スロットレベルである必要があります。これは、魔術師のレベルの半分を切り上げたものです。次の表を参照してください。
Sorcerer level Highest spell level possible
1 1
2 1
3 2
4 2
5 3
6 3
7 4
8 4
9 5
10 5
11 6
12 6
13 7
14 7
15 8
16 8
17 9
18 9
19 9
20 9
つまり、レベル3では、次の[1, 1, 2, 2]
ようなスペルレベルを持つことができます。
Level 1: [1, 1] (initial)
Level 2: [1, 1, 1 (new)]
Level 3: [1, 1, 2 (replaced), 2 (new)]
アクセスできる最高レベルの呪文を選ぶ必要はありません。
呪文レベル[1, 1, 1, 1]
はレベル3で完全に有効です。
最後に、呪文を置き換えることはすべてのレベルでオプションのオプションであることを覚えておいてください。これは、一部のレベルが置換をスキップできる一方で、他のレベルはそれを使用することを意味します。
チャレンジ
1から20までの整数(レベル)を取るプログラムまたは関数を作成します。
また、値の範囲が1〜9の整数(スペルレベル)の配列も必要です(9が最大のスペルレベルです)。
プログラムの出力は、選択された呪文レベルが特定のレベルの魔術師に有効であるかどうかを検証する真/偽の値である必要があります。
テストケース
Level: 1
Spells: [1, 1]
Output: true
Level: 8
Spells: [1, 1, 2, 3, 3, 5]
Ouput: false
Reason: A level 8 can't ever have access to a level 5 spell.
Level: 5
Spells: [1, 1, 1, 2, 2, 2, 3]
Output: false
Reason: A level 5 can't have access to 7 spells
Level: 11
Spells: [3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6]
Output: false
Reason: Too many spell upgrades.
The highest valid selection for level 11 is
[3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6]
これはコードゴルフです -最少バイトが勝ちます!
[2,2,3,3]
、そのレベルの魔術師がアクセスできるよりも多くの置換が必要なため、スペルレベルは不可能です。」-リストが5ではなく4の長さであるという事実は、ここでのより根本的な理由ではありませんか?([1,3,2,2,3]
レベル3 [1,1,2(replaced),2(new)]
から[1,3(replaced),2,2,3(new)]
?に行くことでレベル4が可能だと思います)