I numeri catalani ( OEIS ) sono una sequenza di numeri naturali che spesso compaiono in combinatoria.
L'ennesimo numero catalano è il numero di parole di Dyck (stringhe bilanciate di parentesi o parentesi come [[][]]
; formalmente definite come una stringa usando due caratteri aeb in modo tale che ogni sottostringa a partire dall'inizio abbia un numero di caratteri maggiore o uguale al numero di caratteri b e l'intera stringa ha lo stesso numero di caratteri aeb) con lunghezza 2n. L'ennesimo numero catalano (per n> = 0) è anche esplicitamente definito come:
A partire da n = 0, i primi 20 numeri catalani sono:
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190...
Sfida
Scrivi un programma o una funzione completa che accetta un numero intero non negativo n tramite STDIN o un'alternativa accettabile e genera l'ennesimo numero catalano. Il programma deve funzionare almeno per gli ingressi 0-19.
I / O
Ingresso
Il tuo programma deve ricevere input da STDIN, argomenti di funzioni o una delle alternative accettabili per questo meta post. È possibile leggere il numero immesso come rappresentazione decimale standard, rappresentazione unaria o byte.
- Se (e solo se) la tua lingua non è in grado di accettare input da STDIN o qualsiasi altra alternativa accettabile, potrebbe accettare input da una variabile codificata o equivalente equivalente nel programma.
Produzione
Il tuo programma deve emettere l'ennesimo numero catalano su STDOUT, il risultato della funzione o una delle alternative accettabili per questo meta post. È possibile emettere il numero catalano nella sua rappresentazione decimale standard, rappresentazione unaria o byte.
L'output dovrebbe consistere nel numero catalano apprettato, seguito facoltativamente da una o più nuove righe. Nessun altro output può essere generato, tranne un output costante dell'interprete della tua lingua che non può essere soppresso (come un saluto, codici colore ANSI o rientro).
Non si tratta di trovare la lingua più breve. Si tratta di trovare il programma più breve in ogni lingua. Pertanto, non accetterò una risposta.
In questa sfida, le lingue più recenti della sfida sono accettabili purché abbiano un'implementazione. È permesso (e persino incoraggiato) di scrivere questo interprete per una lingua precedentemente non implementata. A parte questo, tutte le regole standard del code-golf devono essere rispettate. Le iscrizioni nella maggior parte delle lingue verranno classificate in byte in una codifica preesistente appropriata (di solito UTF-8). Si noti inoltre che sono consentiti incorporati per il calcolo dell'ennesimo numero catalano.
Catalogare
Lo snippet di stack nella parte inferiore di questo post genera il catalogo dalle risposte a) come elenco della soluzione più breve per lingua eb) come classifica generale.
Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, usando il seguente modello Markdown:
## Language Name, N bytes
dov'è N
la dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Se si desidera includere più numeri nell'intestazione (ad es. Perché il punteggio è la somma di due file o si desidera elencare separatamente le penalità del flag dell'interprete), assicurarsi che il punteggio effettivo sia l' ultimo numero nell'intestazione:
## Perl, 43 + 2 (-p flag) = 45 bytes
Puoi anche rendere il nome della lingua un collegamento che verrà quindi visualizzato nello snippet:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes