Les nombres catalans ( OEIS ) sont une suite de nombres naturels apparaissant souvent en combinatoire.
Le nième numéro catalan est le nombre de mots Dyck (chaînes équilibrées de parenthèses ou de crochets tels que [[][]]
; formellement défini comme une chaîne utilisant deux caractères a et b tels que toute sous-chaîne commençant à partir du début ait le nombre de caractères supérieur ou égal à nombre b, et la chaîne entière a le même nombre de caractères a et b) de longueur 2n. Le nième numéro catalan (pour n> = 0) est aussi explicitement défini comme:
À partir de n = 0, les 20 premiers chiffres en catalan sont:
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190...
Défi
Ecrivez un programme complet ou une fonction prenant un entier non négatif n via STDIN ou une alternative acceptable, et générant le nième numéro de catalan. Votre programme doit fonctionner au minimum pour les entrées 0-19.
I / O
Contribution
Votre programme doit recevoir les entrées de STDIN, des arguments de fonction ou l’une des alternatives acceptables selon cette méta-publication. Vous pouvez lire le nombre saisi sous forme de représentation décimale standard, de représentation unaire ou d'octets.
- Si (et seulement si) votre langue ne peut pas prendre en charge l'entrée de STDIN ou toute autre alternative acceptable, elle peut prendre celle d'une variable à code fixe ou d'un équivalent approprié dans le programme.
Sortie
Votre programme doit sortir le nième numéro catalan dans STDOUT, le résultat de la fonction ou l’une des alternatives acceptables selon cette méta publication. Vous pouvez afficher le nombre catalan dans sa représentation décimale standard, une représentation unaire ou en octets.
La sortie doit comprendre le numéro catalan approprié, suivi facultativement par une ou plusieurs nouvelles lignes. Aucune autre sortie ne peut être générée, à l'exception de la sortie constante de l'interpréteur de votre langue qui ne peut pas être supprimée (message d'accueil, codes de couleur ANSI ou indentation, par exemple).
Il ne s'agit pas de trouver la langue la plus courte. Il s’agit de trouver le programme le plus court dans toutes les langues. Par conséquent, je n'accepterai pas de réponse.
Dans ce défi, les langues plus récentes que le défi sont acceptables tant qu'elles ont une mise en œuvre. Il est permis (et même encouragé) d’écrire cet interprète vous-même pour une langue non encore implémentée. En dehors de cela, toutes les règles standard du code-golf doivent être respectées. Les soumissions dans la plupart des langues seront notées en octets selon un codage préexistant approprié (généralement UTF-8). Notez également que les fonctions intégrées permettant de calculer le nième nombre catalan sont autorisées.
Catalogue
L'extrait de pile au bas de cet article génère le catalogue à partir des réponses a) sous forme de liste des solutions les plus courtes par langue et b) sous forme de classement global.
Pour vous assurer que votre réponse apparaît, commencez votre réponse par un titre, en utilisant le modèle Markdown suivant:
## Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores en les effaçant. Par exemple:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs numéros dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou si vous souhaitez répertorier séparément les pénalités d'indicateur d'interprétation), assurez-vous que le score réel est le dernier numéro de l'en-tête:
## Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de langue un lien qui apparaîtra ensuite dans l'extrait de code:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes