A maioria das pessoas conhece o triângulo de Pascal.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
O triângulo de Pascal é um autômato em que o valor de uma célula é a soma das células no canto superior esquerdo e no canto superior direito. Agora vamos definir um triângulo semelhante. Em vez de apenas levar as células para o canto superior esquerdo e o canto superior direito, levaremos todas as células ao longo de duas linhas infinitas que se estendem para o canto superior esquerdo e o canto superior direito. Assim como o triângulo de Pascal, começamos com um único 1
preenchido infinitamente por zeros e construímos para baixo a partir daí.
Por exemplo, para calcular a célula indicada com um x
1
1 1
2 2 2
4 5 5 4
x
Nós somaríamos as seguintes células
.
. .
2 . 2
. 5 5 .
x
Fazendo nosso novo celular 14
.
Tarefa
Dado um número da linha ( n ), e a distância a partir da (esquerda r ) Calcular e emitir o r po diferente de zero de entrada a partir da esquerda na n -ésima linha. (o equivalente no triângulo de Pascal é nCr ). Você pode assumir que r é menor que n .
Isto é código-golfe , o objetivo é minimizar o número de bytes em sua solução.
Casos de teste
0,0 -> 1
1,0 -> 1
2,0 -> 2
4,2 -> 14
6,3 -> 106
Aqui estão as primeiras duas linhas em forma de triângulo:
1
1 1
2 2 2
4 5 5 4
8 12 14 12 8
16 28 37 37 28 16
32 64 94 106 94 64 32
64 144 232 289 289 232 144 64
128 320 560 760 838 760 560 320 128
Respostas:
Geléia ,
1817 bytesUsa indexação baseada em 0.
Experimente online!
Como funciona
fonte
Python 3 , 72 bytes
1 byte graças a Kritixi Lithos.
Experimente online!
fonte
n>=r>=0and
e salvar um byten
for 0, fornece 1; caso contrário, dá 0. É comon and ... or 1
, mas mais curto.0^0
está1
na maioria das linguagens de programação .ES6,
80bytes 78Em ação!
Dois bytes graças a Arnauld.
fonte
while(n&&r<n)
ewhile(o*r)
.PHP , 94 bytes
maneira recursiva indexada em 0
Experimente online!
PHP , 125 bytes
Indexado a 0
Experimente online!
PHP> = 7.1, 159 bytes
0 indexado para linhas com mais de 50
fonte
Python 3 , 61 bytes
Isso retorna True para o caso base (0, 0) , que é permitido por padrão .
Experimente online!
fonte
~n<-r<1
é bastante inteligente, passei uns bons 10 minutos tentando jogar golfen>=r>=0
.Pascal , 145 bytes
Experimente online!
Usa a
T(n, r) = T(n-1, r-1) + T(n-1, r)
recursão.fonte