Edit : Je n'ai jamais joué à D&D auparavant, donc lorsque j'ai posé cette question au départ, je ne l'ai pas bien recherchée. Je m'en excuse, et je fais quelques modifications qui pourraient invalider les réponses pour rester aussi fidèles que possible aux règles du dnd 5e. Désolé.
Un fan de D&D d'une récente question de Hot Network semble avoir du mal à déterminer si les sorts choisis par un sorcier correspondent aux possibilités - et je pense que nous devrions aider!
introduction
(tout cela est déjà décrit dans la question précédente)
Un sorcier connaît deux sorts de niveau 1 depuis le début (niveau 1): [1, 1]
Chaque fois qu'un sorcier gagne un niveau (sauf pour les niveaux 12, 14, 16, 18, 19 et 20), il apprend un nouveau sort (obligatoire).
De plus, lorsque vous passez au niveau supérieur, vous pouvez choisir (facultatif) de remplacer l' un des sorts par un autre.
Les sorts appris et remplacés doivent être un niveau d'emplacement de sort valide qui correspond à la moitié du niveau de votre sorcier arrondi. Voir ce tableau:
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
Cela signifie qu'au niveau 3, on peut avoir les niveaux de sort [1, 1, 2, 2]
comme ceci:
Level 1: [1, 1] (initial)
Level 2: [1, 1, 1 (new)]
Level 3: [1, 1, 2 (replaced), 2 (new)]
Il n'est pas nécessaire de choisir les sorts de plus haut niveau auxquels vous avez accès.
Les niveaux des sorts [1, 1, 1, 1]
sont parfaitement valables pour un niveau 3.
Enfin, n'oubliez pas que le remplacement d'un sort est une option facultative pour chaque niveau . Cela signifie que certains niveaux peuvent ignorer le remplacement, tandis que d'autres s'en servent.
Le défi
Créez un programme ou une fonction qui prend un entier (niveau) compris entre 1 et 20.
Il doit également prendre un tableau d'entiers (niveaux de sort) avec des valeurs allant de 1 à 9 dans n'importe quel ordre (9 est le niveau de sort maximum).
La sortie du programme doit être une valeur de vérité / fausse validant si les niveaux de sort choisis sont valables pour un sorcier du niveau donné.
Cas de test
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]
C'est le golf de code - le moins d'octets gagne!
[2,2,3,3]
ne seraient pas possibles car ils nécessitent plus de remplacement qu'un sorcier de ce niveau n'aurait accès." - le fait que la liste soit de longueur 4 plutôt que 5 n'est-il pas une raison plus fondamentale ici? (Je suppose que [1,3,2,2,3]
c'est possible pour un niveau 4 en passant du niveau 3 [1,1,2(replaced),2(new)]
à [1,3(replaced),2,2,3(new)]
?)