W tym zadaniu otrzymujesz nieparzystą liczbę białych kulek i taką samą liczbę czarnych kulek. Zadanie polega na policzeniu wszystkich sposobów umieszczania piłek w pojemnikach, tak aby w każdym pojemniku znajdowała się nieparzysta liczba każdego koloru.
Powiedzmy, że mamy 3 białe kulki. Różne sposoby to:
(wwwbbb)
(wb)(wb)(wb)
dla dwóch różnych możliwości.
Jeśli mamy 5 białych kulek, różne sposoby to:
(wwwwwbbbbb)
(wwwbbb)(wb)(wb)
(wwwb)(wbbb)(wb)
(wb)(wb)(wb)(wb)(wb)
Możesz pobrać dane wejściowe, które są pojedynczymi liczbami całkowitymi, w dowolny sposób. Dane wyjściowe to tylko jedna liczba całkowita.
Twój kod musi być wystarczająco szybki, abyś mógł go zobaczyć dla 11 białych kulek.
Możesz użyć dowolnego języka lub biblioteki.
:)
Odpowiedzi:
Pari / GP, 81 bajtów
Dla większej efektywności, wymienić
1+
z1+O(x^(n+1))+O(y^(n+1))+
(pierwszyO
sam termin już pomaga dużo).Wypróbuj online! (wcześniejsza wersja 86-bajtowa z parą niepotrzebnych parenów i bez
p=
skrótu)Stara wersja, 90 bajtów
Komputer
f(11)
wymaga większego rozmiaru stosu, komunikat o błędzie powie ci, jak go zwiększyć. To jest bardziej wydajny (ale mniej Golfy) wymienić dwien
, które pojawiają się jako drugie argumenty doprod
z(n-1)/2
.źródło
(n-1)/2
?Python 3, 108 bajtów
Rekurencyjnie wylicza wszystkie zestawy, upewniając się, że nie zostaną duplikowane, zawsze generując zestawy w kolejności. Racjonalnie szybki, gdy zapamiętujesz go
C = functoools.lru_cache(None)(C)
, ale nie jest to koniecznen = 11
.Zadzwoń,
C(num_white, num_black)
aby uzyskać wynik. Pierwsza paran
:Aby wygenerować wyniki:
Np. Dla (7, 7):
źródło
Python 3 ,
180172 bajtówWypróbuj online!
Prosta implementacja funkcji generującej. Długi, ale (nieco) wydajny. Czas O (n 4 ), pamięć O (n 2 ).
Powstała tablica
a
zawiera wszystkie wyniki o wszystkich rozmiarach don
, chociaża[n][n]
zwracana jest tylko .źródło
Python 2 ,
168181 bajtówWypróbuj online!
źródło
n
zawiera dane wejściowe) Powinieneś dodaćdef f(n):
lubn=input()
(aby uczynić go funkcją / pełnego programu).a
Może byćeval(`[[0]*n]*n`)
(gdzie`
skrótrepr
).