Edycja : Nie grałem wcześniej w D&D, więc kiedy początkowo zadałem to pytanie, nie zbadałem go właściwie. Przepraszam za to i wprowadzam kilka zmian, które mogą unieważnić odpowiedzi, aby zachować jak największą zgodność z zasadami dnd 5e. Przepraszam.
Fan D&D z ostatniego Hot Network Question wydaje się mieć problem z ustaleniem, czy wybrane zaklęcia czarownika odpowiadają tym możliwościom - i myślę, że powinniśmy pomóc!
Wprowadzenie
(wszystko to jest już opisane we wcześniej wspomnianym pytaniu)
Czarownik zna dwa zaklęcia poziomu 1 od początku (poziom 1): [1, 1]
Za każdym razem, gdy czarownik zdobywa poziom (z wyjątkiem poziomów 12, 14, 16, 18, 19 i 20), uczą się nowego zaklęcia (obowiązkowe).
Dodatkowo, przy awansowaniu, możesz wybrać (opcjonalnie) zastąpienie jednego z zaklęć innym.
Zaklęcia wyuczone i zastąpione muszą być prawidłowym poziomem miejsca na zaklęcie, który jest o połowę wyższy od poziomu twojego czarownika. Zobacz tę tabelę:
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
Oznacza to, że na poziomie 3 można mieć takie poziomy zaklęć [1, 1, 2, 2]
:
Level 1: [1, 1] (initial)
Level 2: [1, 1, 1 (new)]
Level 3: [1, 1, 2 (replaced), 2 (new)]
Nie jest wymagane wybieranie zaklęć najwyższego poziomu, do których masz dostęp.
Poziomy zaklęć [1, 1, 1, 1]
są doskonale ważne dla poziomu 3.
Na koniec pamiętaj, że zastąpienie zaklęcia jest opcjonalną opcją na każdym poziomie . Oznacza to, że niektóre poziomy mogą pominąć zamianę, podczas gdy inne z niej korzystają.
Wyzwanie
Stwórz program lub funkcję, która przyjmuje liczbę całkowitą (poziom) od 1 do 20.
Powinien także przyjmować tablicę liczb całkowitych (poziomów zaklęć) o wartościach od 1 do 9 w dowolnej kolejności (9 to maksymalny poziom zaklęcia).
Dane wyjściowe programu powinny być zgodne z prawdą / fałszem, sprawdzając, czy wybrane poziomy zaklęć są ważne dla czarodzieja danego poziomu.
Przypadki testowe
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]
To jest golf golfowy - wygrywa najmniej bajtów!
źródło
[2,2,3,3]
nie byłyby możliwe, ponieważ wymagają więcej zamiany, niż czarodziej z tego poziomu miałby dostęp” - czy fakt, że lista ma długość 4 zamiast 5, nie jest tutaj bardziej fundamentalnym powodem? (Zakładam, że[1,3,2,2,3]
możliwe jest przejście na poziom 4 z poziomu 3[1,1,2(replaced),2(new)]
na[1,3(replaced),2,2,3(new)]
?)Odpowiedzi:
Java (JDK 10) , 191 bajtów
Wypróbuj online!
Objaśnienia
Tabela 1: Maksymalny rozkład zaklęć dla każdego poziomu czarownika, wykorzystany w odpowiedzi Axorena na powiązane pytanie .
Kredyty
źródło
return l<1&java.util.Arrays.equals(m,new int[9]);
może byćz=0;for(int i:m)z+=i;return l+z==0;
zamiast. Lub jeśli wartości wm
nigdy nie mogą być ujemne na końcu,==0
mogą być<1
.for(int i:m)l|=i;
jest jeszcze mądrzejszy! Niezłe.new int[]{5,6,6,6,7,7,7,8,8,8,9,9,9,9,9}
). Jeśli wprowadzę je malejąco (new int[]{9,9,9,9,9,8,8,8,7,7,7,6,6,6,5}
jak napisano w wymaganiu wejściowym, które napisałem poniżej golfa), to zadziała. Dodałem skrzynkę testową, aby pokazać, że rzeczywiście działa.Python 3 , 98 bajtów
Wypróbuj online!
Nie golfowany:
edycja: poprawione rozwiązanie w celu użycia poprawnych reguł D&D
źródło
print(v(20, [6,6,6,6,7,7,7,8,8,8,9,9,9,9,9])) # False
drukowane są prawdziwe. Powinien zostać wydrukowany fałsz.min(9,n-1)
.Węgiel drzewny , 51 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Ustawia poziomy pisowni w kolejności rosnącej jako ciąg znaków. Wyjaśnienie:
Wprowadź poziom.
Wykonaj dekodowanie długości ciągu na łańcuchu,
0544443335
co spowoduje powstanie łańcucha11111222233334444555566677788899999
. Łańcuch ten jest następnie krojony, zaczynając od poziomu (1-indeksowany) i kończąc na poziomie podwójnym (jeśli mniej niż 12) lub 6 + 1,5 *, zaokrąglonym w górę, z wyjątkiem poziomu 19, który jest zaokrąglany w dół.0
Przyrostek A zapewnia, że nie ma zbyt wielu zaklęć.Porównaj poziomy zaklęć z podciągiem i wypisuje,
-
jeśli żaden z nich nie jest nadmierny.źródło
11113
na poziomie,4
który jest wynikiem braku opcjonalnych ulepszeń, biorąc1
na poziomie 2,1
na poziomie 3 i3
na poziomie 4.JavaScript (ES6), 79 bajtów
(level)(array)
Wypróbuj online!
Kod testowy
Poniżej znajduje się link do jakiegoś kodu testowego, który przyjmuje poziom czarownika jako dane wejściowe i zwraca tablicę maksymalnych poziomów zaklęć, używając tej samej logiki co powyższa funkcja.
Wypróbuj online!
W jaki sposób?
Tabela referencyjna
Liczba zaklęć
Maksymalne poziomy zaklęć
źródło
Groovy , 155 bajtów
Generuje najlepszą możliwą księgę czarów, a następnie sprawdza, czy księga czarów przekazana do metody nie jest lepsza.
Niegolfowane, z jawnymi typami niejawnymi:
Wypróbuj online!
źródło