Os números catalães ( OEIS ) são uma sequência de números naturais que geralmente aparecem na combinatória.
O enésimo número catalão é o número de palavras dyck (cadeias equilibradas de parênteses ou colchetes, como [[][]]
; formalmente definido como uma cadeia usando dois caracteres aeb, de modo que qualquer substring iniciada no início tenha um número de caracteres maior ou igual ao número de caracteres b, e a sequência inteira tem o mesmo número de caracteres aeb) com o comprimento 2n. O enésimo número catalão (para n> = 0) também é definido explicitamente como:
Começando com n = 0, os 20 primeiros números catalães são:
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190...
Desafio
Escreva um programa ou função completo que use um número inteiro não negativo n via STDIN ou uma alternativa aceitável e emita o enésimo número catalão. Seu programa deve funcionar no mínimo para as entradas de 0 a 19.
I / O
Entrada
Seu programa deve receber informações de STDIN, argumentos de função ou qualquer uma das alternativas aceitáveis para esta meta post. Você pode ler o número inserido como sua representação decimal padrão, representação unária ou bytes.
- Se (e somente se) o seu idioma não puder receber informações do STDIN ou de qualquer alternativa aceitável, ele poderá receber informações de uma variável codificada permanentemente ou de um equivalente adequado no programa.
Saída
Seu programa deve gerar o enésimo número catalão em STDOUT, resultado da função ou qualquer uma das alternativas aceitáveis para esta meta postagem. Você pode imprimir o número catalão em sua representação decimal padrão, representação unária ou bytes.
A saída deve consistir no número catalão apropriado, opcionalmente seguido por uma ou mais novas linhas. Nenhuma outra saída pode ser gerada, exceto a saída constante do intérprete do seu idioma que não pode ser suprimida (como uma saudação, códigos de cores ANSI ou recuo).
Não se trata de encontrar o idioma mais curto. Trata-se de encontrar o programa mais curto em todos os idiomas. Portanto, não aceitarei uma resposta.
Nesse desafio, os idiomas mais novos que o desafio são aceitáveis desde que tenham uma implementação. É permitido (e até encorajado) escrever esse intérprete para um idioma anteriormente não implementado. Fora isso, todas as regras padrão do código-golfe devem ser obedecidas. Os envios na maioria dos idiomas serão pontuados em bytes em uma codificação preexistente apropriada (geralmente UTF-8). Observe também que os internos para o cálculo do enésimo número catalão são permitidos.
Catálogo
O snippet de pilha na parte inferior desta postagem gera o catálogo a partir das respostas a) como uma lista da solução mais curta por idioma eb) como uma tabela geral de líderes.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
## Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:
## Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes