Modifica : non avevo mai giocato a D&D prima, quindi quando inizialmente ho fatto questa domanda non l'ho cercata correttamente. Mi scuso per questo, e sto apportando alcune modifiche che potrebbero invalidare le risposte per rimanere il più vero possibile alle regole del dnd 5e. Scusate.
Un fan di D&D di una recente domanda su Hot Network sembra avere qualche problema nel capire se gli incantesimi scelti da uno stregone si allineano alle possibilità - e penso che dovremmo aiutare!
introduzione
(tutto ciò è già descritto nella domanda precedentemente citata)
Uno stregone conosce due incantesimi di livello 1 dall'inizio (livello 1): [1, 1]
Ogni volta che uno stregone ottiene un livello (tranne i livelli 12, 14, 16, 18, 19 e 20) imparano un nuovo incantesimo (obbligatorio).
Inoltre, quando si sale di livello, si può scegliere (facoltativo) di sostituire uno degli incantesimi con un altro.
Gli incantesimi appresi e sostituiti devono essere un livello di slot incantesimo valido pari alla metà del livello del tuo stregone arrotondato per eccesso. Vedi questa tabella:
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
Questo significa che al livello 3 si possono avere i livelli di incantesimi [1, 1, 2, 2]come questo:
Level 1: [1, 1] (initial)
Level 2: [1, 1, 1 (new)]
Level 3: [1, 1, 2 (replaced), 2 (new)]
Non è necessario scegliere gli incantesimi di livello più alto a cui hai accesso.
I livelli degli incantesimi [1, 1, 1, 1]sono perfettamente validi per un livello 3.
Infine, ricorda che la sostituzione di un incantesimo è un'opzione opzionale per ogni livello . Ciò significa che alcuni livelli potrebbero saltare la sostituzione, mentre altri ne fanno uso.
La sfida
Crea un programma o una funzione che richiede un numero intero (livello) tra 1 e 20.
Dovrebbe anche prendere un array di numeri interi (livelli di incantesimo) con valori che vanno da 1 a 9 in qualsiasi ordine (9 è il livello di incantesimo massimo).
L'output del programma dovrebbe essere un valore di verità / falsità che convalida se i livelli di incantesimo scelti sono validi per uno stregone di un determinato livello.
Casi 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]
Questo è code-golf - vince meno byte!
[2,2,3,3]non sarebbero possibili in quanto richiedono più sostituzioni di quelle a cui uno stregone di quel livello avrebbe accesso." - Il fatto che la lista sia lunghezza 4 piuttosto che 5 non è una ragione più fondamentale qui? (Suppongo [1,3,2,2,3]sia possibile per un livello 4 passando dal livello 3 [1,1,2(replaced),2(new)]a [1,3(replaced),2,2,3(new)]?)
