Liczba głosów , którą nazwiemy B , to liczba sposobów na uporządkowanie liczb od 1 do B (B + 1) / 2 w trójkąt, tak aby każdy rząd i kolumna były w dowolnej kolejności. Pierwsze cztery numery głosowania to:
a(0) = 1
a(1) = 1
a(2) = 1
a(3) = 2
a(3)
wynosi 2, co oznacza, że istnieją 2 sposoby ułożenia liczb od 1 do 3(3+1)/2 = 6
w takim trójkącie:
1 1
2 3 or 2 4
4 5 6 3 5 6
Aby uzyskać więcej informacji, zobacz wpis sekwencji OEIS .
Twoim wyzwaniem, biorąc pod uwagę trójkąt do głosowania, jest sprawdzenie jego poprawności. Jeśli spełnia warunki trójkąta do głosowania (liczba wierszy i kolumn rośnie), należy wypisać, ile innych sposobów (wyłączając ten na wejściu), można poprawnie ustawić trójkąt. Jeśli trójkąt wejściowy jest niepoprawnie skonstruowany, nie powinieneś nic generować.
Końcowe znaki nowej linii są dozwolone.
Wejście
Trójkąt liczb, który może, ale nie musi, być ważnym trójkątem do głosowania. Na przykład:
1
2 3
4 5 6
1
10 5
9 8 2
7 6 4 3
1
3 2
9
2 11
14 3 5
12 8 1 7
15 13 10 4 6
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
Wynik
Jeśli dane wejściowe to prawidłowy trójkąt do głosowania, pozostała liczba sposobów na ułożenie tych samych liczb w ważnym trójkącie do głosowania. Jeśli dane wejściowe nie są prawidłowym trójkątem do głosowania, nic. Na przykład powyższe dane wejściowe generują te dane wyjściowe ( <nothing>
jest symbolem zastępczym dla rzeczywistej pustej produkcji):
1 # the same as a(3)-1
<nothing>
<nothing>
<nothing>
33591 # the same as a(6)-1
Punktacja
To jest golf golfowy : jak zwykle wygrywa najmniej bajtów. Tiebreaker jest najwcześniej opublikowany.
źródło
1/4 5/2 3 6
ważny?Odpowiedzi:
Galaretka , 20 bajtów
W przypadku prawidłowych trójkątów głosowania czas działania i użycie pamięci wynoszą co najmniej O (n!) , Gdzie n jest liczbą wpisów w trójkącie. Nieprawidłowe są rozpoznawane przez awarię, a więc nic nie drukują.
Wypróbuj online!
Testowe uruchomienie
Lokalnie udało mi się sprawdzić, czy a (4) jest obliczone poprawnie.
Jak to działa
źródło
Brachylog , 44 bajty
Wypróbuj online!
Działa to w czasie podwójnie wykładniczym, więc w przypadku prawdziwych przypadków testowych trzeba by mi uwierzyć, że teoretycznie daje poprawny wynik, dla trójkątów o długości większej lub równej
3
.Nadal możesz testować przypadki testowe falsey, które powinny zakończyć się dość szybko.
źródło
JavaScript (ES6), 143 bajty
Przeszukuje trójkąt w celu znalezienia nieprawidłowego wpisu, a następnie używa rekursywnego sformułowania formuły w OEIS do obliczenia wyniku.
źródło