Esta é a trança de Pascal:
1 4 15 56 209 780 2911 10864 40545 151316 564719
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719
Eu inventei isso totalmente. Blaise Pascal não tinha uma trança, até onde eu sei, e se ele tinha, provavelmente era feito de cabelo em vez de números.
É definido assim:
- A primeira coluna tem uma única
1
no meio. - A segunda coluna tem um
1
na parte superior e na parte inferior. - Agora alternamos entre colocar um número no meio ou duas cópias de um número na parte superior e inferior.
- Se o número for na parte superior ou inferior, será a soma dos dois números adjacentes (por exemplo,
56 = 15 + 41
). Se você inclina um pouco a cabeça, é como um passo no triângulo de Pascal. - Se o número ficar no meio, será a soma dos três números adjacentes (por exemplo
41 = 15 + 11 + 15
).
Sua tarefa será imprimir (parte de) esta trança.
Entrada
Você deve escrever um programa ou função que receba um único número inteiro n
, fornecendo o índice da última coluna a ser impressa.
Você pode escolher se a primeira coluna (imprimindo apenas uma única 1
na linha do meio) corresponde a n = 0
ou n = 1
. Essa deve ser uma escolha consistente em todas as entradas possíveis.
Saída
Saída Braid de Pascal até a n
th coluna. O espaço em branco deve corresponder exatamente ao layout de exemplo acima, exceto que você pode preencher a (s) linha (s) mais curta (s) ao comprimento da (s) linha (s) mais longa (s) com espaços e, opcionalmente, pode gerar um único avanço de linha à direita.
Em outras palavras, cada coluna deve ser exatamente tão larga quanto o número (ou par de números iguais) nessa coluna, os números em colunas sucessivas não devem se sobrepor e não deve haver espaços entre as colunas.
Você pode imprimir o resultado em STDOUT (ou a alternativa mais próxima) ou, se escrever uma função, poderá retornar uma string com o mesmo conteúdo ou uma lista de três strings (uma para cada linha).
Detalhes adicionais
Você pode supor que n
não será menor que o índice da primeira coluna (portanto, não será menor que 0
ou 1
dependendo da sua indexação). Você também pode supor que o último número na trança seja menor que 256 ou o maior número representável pelo tipo inteiro nativo do seu idioma, o que for maior . Portanto, se o seu tipo inteiro nativo puder armazenar apenas bytes, você pode assumir que o maior n
é 9
ou 10
(dependendo de você usar com base em 0 ou 1 n
) e se ele pode armazenar números inteiros de 32 bits assinados, n
será no máximo 33
ou 34
.
Aplicam-se as regras padrão de código de golfe . O código mais curto vence.
OEIS
Aqui estão alguns links OEIS relevantes. Obviamente, eles contêm spoilers de diferentes maneiras de gerar os números na trança:
- Superior / inferior: A001353 ou A010905 ou A106707 ou A195503
- Médio: A001835 ou A079935
- Ambos: A002530
Casos de teste
Esses casos de teste usam indexação de 1 base. Cada caso de teste tem quatro linhas, sendo a primeira a entrada e as três restantes a saída.
1
1
---
2
1
1
1
---
3
1
1 3
1
---
5
1 4
1 3 11
1 4
---
10
1 4 15 56 209
1 3 11 41 153
1 4 15 56 209
---
15
1 4 15 56 209 780 2911
1 3 11 41 153 571 2131 7953
1 4 15 56 209 780 2911
---
24
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560