Te numery Kataloński ( OEIS ) to sekwencja liczb naturalnych, często występujących w kombinatoryki.
N-ta liczba katalońska to liczba słów Dyck (zrównoważone ciągi nawiasów lub nawiasów, takie jak [[][]]
; formalnie zdefiniowane jako ciąg znaków przy użyciu dwóch znaków a i b tak, że dowolny ciąg znaków rozpoczynający się od początku ma liczbę znaków większą lub równą liczbie znaków b, a cały łańcuch ma taką samą liczbę znaków aib) o długości 2n. N-ta liczba katalońska (dla n> = 0) jest również wyraźnie zdefiniowana jako:
Począwszy od n = 0, pierwsze 20 liczb katalońskich to:
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190...
Wyzwanie
Napisz pełny program lub funkcję, która przyjmuje nieujemną liczbę całkowitą n przez STDIN lub akceptowalną alternatywę i wyprowadza ntą liczbę katalońską. Twój program musi działać co najmniej dla wejść 0–19.
I / O
Wkład
Twój program musi pobierać dane wejściowe z STDIN, argumenty funkcji lub dowolne z dopuszczalnych alternatyw dla tego meta postu. Wprowadzoną liczbę można odczytać jako jej standardową reprezentację dziesiętną, jedność lub bajty.
- Jeśli (i tylko jeśli) twój język nie może pobierać danych wejściowych ze STDIN lub jakiejkolwiek akceptowalnej alternatywy, może pobierać dane wejściowe ze zmiennej zakodowanej na stałe lub odpowiedniego odpowiednika w programie.
Wydajność
Twój program musi wypisać n-ty kataloński numer do STDOUT, wyniku funkcji lub dowolnej z dopuszczalnych alternatyw dla tego meta-postu. Możesz wypisać liczbę katalońską w jej standardowej reprezentacji dziesiętnej, jedności lub bajtach.
Wynik powinien składać się z odpowiedniej liczby katalońskiej, po której opcjonalnie może następować jedna lub więcej nowych linii. Żadne inne dane wyjściowe nie mogą być generowane, z wyjątkiem stałych wyników tłumacza języka, których nie można stłumić (takich jak powitanie, kody kolorów ANSI lub wcięcia).
Tu nie chodzi o znalezienie najkrótszego języka. Chodzi o znalezienie najkrótszego programu w każdym języku. Dlatego nie przyjmuję odpowiedzi.
W tym wyzwaniu języki nowsze niż wyzwanie są dopuszczalne, o ile mają implementację. Dozwolone jest (a nawet zachęcane) samodzielne pisanie tego tłumacza dla wcześniej niewdrożonego języka. Poza tym należy przestrzegać wszystkich standardowych zasad gry w golfa kodowego . Zgłoszenia w większości języków będą oceniane w bajtach w odpowiednim wcześniej istniejącym kodowaniu (zwykle UTF-8). Należy również pamiętać, że wbudowane metody obliczania n-tej liczby katalońskiej są dozwolone.
Katalog
Fragment kodu na dole tego postu generuje katalog na podstawie odpowiedzi a) jako listy najkrótszych rozwiązań według języka oraz b) jako ogólnej tabeli wyników.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
## Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik to suma dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
## Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes