Podczas mnożenia monomialów w podstawie Milnora dla algebry Steenroda część algorytmu obejmuje wyliczenie pewnych „dopuszczalnych macierzy”.
Biorąc pod uwagę dwie listy nieujemnych liczb całkowitych r 1 , ..., r m oraz s 1 , ..., s n , macierz nieujemnych liczb całkowitych X
jest dozwolone, jeśli
Suma kolumnie j jest mniejsza lub równa s j :
Suma-tego rzędu ważony potęgi 2 jest mniejsza niż lub równa r I :
Zadanie
Napisz program, który pobiera parę list r 1 , ..., r m i s 1 , s 1 , ..., s n i oblicza liczbę dopuszczalnych macierzy dla tych list. Twój program może opcjonalnie wziąć m i n jako dodatkowe argumenty, jeśli zajdzie taka potrzeba.
Liczby te mogą być wprowadzane w dowolnym formacie, który lubią, na przykład pogrupowane w listy lub zakodowane jako jednoargumentowe lub cokolwiek innego.
Wyjście powinno być dodatnią liczbą całkowitą
- Obowiązują standardowe luki.
Punktacja
To jest kod golfowy: wygrywa najkrótsze rozwiązanie w bajtach.
Przykłady:
Dla [2]
i [1]
istnieją dwie dopuszczalne matryce:
Dla [4]
i [1,1]
istnieją trzy dopuszczalne macierze:
Dla [2,4]
i [1,1]
istnieje pięć dopuszczalne macierze:
Przypadki testowe:
Input: [1], [2]
Output: 1
Input: [2], [1]
Output: 2
Input: [4], [1,1]
Output: 3
Input: [2,4], [1,1]
Output: 5
Input: [3,5,7], [1,2]
Output: 14
Input: [7, 10], [1, 1, 1]
Output: 15
Input: [3, 6, 16, 33], [0, 1, 1, 1, 1]
Output: 38
Input: [7, 8], [3, 3, 1]
Output: 44
Input: [2, 6, 15, 18], [1, 1, 1, 1, 1]
Output: 90
Input: [2, 6, 7, 16], [1, 3, 2]
Output: 128
Input: [2, 7, 16], [3, 3, 1, 1]
Output: 175
źródło
Odpowiedzi:
JavaScript (ES7), 163 bajty
Przypadki testowe
Uwaga : usunąłem dwa najbardziej czasochłonne przypadki testowe z tego fragmentu, ale one również powinny przejść pomyślnie.
Pokaż fragment kodu
Skomentował
źródło
Galaretka , 26 bajtów
Pełny program przyjmujący S , R, który drukuje liczbę
Wypróbuj online!
W jaki sposób?
źródło
Wolfram Language (Mathematica) , 101 bajtów
Niech Mathematica rozwiąże to jako system nierówności względem liczb całkowitych. Ustawiłem tablicę symboliczną
f
i prześledziłem trzy zestawy nierówności.Join@@
po prostu spłaszcza listęSolve
.Wypróbuj online!
źródło
Mathematica 139 bajtów
Wypróbuj online
Objaśnienie: Przegrody każdy z R ı do potęgi 2, a następnie sprawia, że wszystkie krotki z jednym do rozkładu sił dwa dla każdej liczby całkowitej, odejmowanie sumy kolumn z listy z s i . Policz liczbę krotek, które sprawiają, że wszystkie pozostałe wpisy są dodatnie.
źródło