O número euleriano A(n, m)
é o número de permutações [1, 2, ..., n]
em que exatamente os m
elementos são maiores que o elemento anterior. Estes também são chamados de aumentos . Por exemplo, se n = 3
houver 3! = 6 permutações de[1, 2, 3]
1 2 3
< < 2 elements are greater than the previous
1 3 2
< > 1 ...
2 1 3
> < 1 ...
2 3 1
< > 1 ...
3 1 2
> < 1 ...
3 2 1
> > 0 ...
Assim, as saídas para A(3, m)
por m
em [0, 1, 2, 3]
será
A(3, 0) = 1
A(3, 1) = 4
A(3, 2) = 1
A(3, 3) = 0
Além disso, esta é a sequência OEIS A173018 .
Regras
- Isso é código-golfe, então o código mais curto vence.
- A entrada
n
será um número inteiro não negativo em
será um número inteiro no intervalo[0, 1, ..., n]
.
Casos de teste
n m A(n, m)
0 0 1
1 0 1
1 1 0
2 0 1
2 1 1
2 2 0
3 0 1
3 1 4
3 2 1
3 3 0
4 0 1
4 1 11
4 2 11
4 3 1
4 4 0
5 1 26
7 4 1191
9 5 88234
10 5 1310354
10 7 47840
10 10 0
12 2 478271
15 6 311387598411
17 1 131054
20 16 1026509354985
42 42 0
n, m
?n = 10
.m
se desejado, mas eu exijo que seja válida para 0 <= m <= n com 0 <= n .Respostas:
Gelatina , 8 bytes
Experimente online!(demora um pouco) ou verifique os casos de teste menores .
Como funciona
fonte
JavaScript (ES6),
504645 bytesCom base na fórmula recursiva:
Casos de teste
Mostrar snippet de código
fonte
MATL , 10 bytes
Experimente online!
Explicação
Considere como um exemplo entradas
n=3
,m=1
. Você pode colocar um%
símbolo para comentar o código a partir desse ponto e ver os resultados intermediários. Por exemplo, o link mostra a pilha após a primeira etapa.fonte
CJam (
2119 bytes - ou 18 se a ordem dos argumentos estiver livre)Este é um bloco anônimo (função) que assume
n m
a pilha. (Se é permitido assumirm n
a pilha,\
pode ser salvo). Ele calcula todas as permutações e filtros, para que o conjunto de testes on - line deve ser bastante limitado.Obrigado a Martin por apontar uma aproximação para
filter-with-parameter
.Dissecação
Observe que os números eulerianos são simétricos:,
E(n, m) = E(n, n-m)
portanto, é irrelevante se você conta quedas ou aumentos.Eficientemente: 32 bytes
Conjunto de testes online .
Isso implementa a recorrência em linhas inteiras.
fonte
{e!f{2ew::>1b=}1e=}
. Ou apenas por diversão:{e!f{2ew::>+:-}0e=}
1e=
primeira solução pode ser1b
.Python,
5556 bytesTodos os testes em repl.it
Aplica a fórmula recursiva no OEIS.
Observe que você
+(m+1)*a(n-1,m)
joga golfe-~m*a(n-1,m)
.(Pode retornar valores booleanos para representar
1
ou0
. RetornaTrue
quandon<0 and m<=0
oum<0
.)fonte
m<1 ? 1 : m==n ? 0 : formula
, de forma equivalentem%n<1 ? (m<1) : formula
; ou alternativamentem<1 ? (n>=0) : formula
.Mathematica,
5956 bytesE aqui está uma versão de 59 bytes que implementa a definição mais literalmente:
fonte
f[n_,m_]:=...
para 49 anos?Sum[Binomial[#+1,k](#2+1-k)^#(-1)^k,{k,0,#2}]&
que pode ser possível de golfe maisPython, 53 bytes
Recursão do OEIS. Saídas booleanas
True
como1
quandon==k
.fonte
MATLAB / oitava, 40 bytes
Esta é uma porta da minha resposta MATL, na forma de uma função anônima. Chame como
ans(7,4)
.Experimente em Ideone .
fonte
Idioma do GameMaker, 62 bytes
Este é um script recursivo
A
baseado na fórmula de @ Arnauld.fonte
Perl, 98 bytes
Baseado na mesma propriedade que a resposta de Arnauld.
fonte
R, 72 bytes
Função recursiva seguindo a lógica no OEIS.
Esse desafio acabou sendo bem próximo entre as diferentes abordagens que tentei. Por exemplo, o uso da fórmula da Wikipedia e o loop sobre a soma resultaram em 92 bytes:
ou a versão vetorizada para 87 bytes:
e finalmente a solução de força bruta (103 bytes) que gera uma matriz de todas as permutações usando o
permute
pacote e a funçãoallPerms
. Essa abordagem funciona apenas non<8
entanto.fonte
Raquete 141 bytes
Ungolfed:
Teste:
Resultado:
fonte
Na verdade ,
2119 bytesEssa resposta usa um algoritmo semelhante ao utilizado por Dennis em sua resposta Jelly . A definição original conta
<
enquanto conto>
. Isso acaba sendo equivalente no final. Sugestões de golfe são bem-vindas. Experimente online!Ungolfing
fonte
Swift 3 , 82
88Bytesfunc A(_ n:Int,_ m:Int)->Int{return m<1 ?1:n>m ?(n-m)*A(n-1,m-1)+(m+1)*A(n-1,m):0}
A mesma fórmula recursiva em um idioma que definitivamente não é para o golfe
fonte
J, 28 bytes
Usa a fórmula
Uso
Explicação
fonte