Escreva o código mais curto possível para resolver o seguinte problema:
Entrada:
Um número inteiro X com 2 <= X
eX <= 100
Resultado:
Total de combinações de 2, 3 e 5 (a repetição é permitida, a ordem é importante) cuja soma é igual a X.
Exemplos:
Entrada: 8
Saída:, 6
porque as combinações válidas são:
3+5
5+3
2+2+2+2
2+3+3
3+2+3
3+3+2
Entrada: 11
Saída:, 16
porque as combinações válidas são
5+3+3
5+2+2+2
3+5+3
3+3+5
3+3+3+2
3+3+2+3
3+2+3+3
3+2+2+2+2
2+5+2+2
2+3+3+3
2+3+2+2+2
2+2+5+2
2+2+3+2+2
2+2+2+5
2+2+2+3+2
2+2+2+2+3
Entrada: 100
Saída:, 1127972743581281
porque as combinações válidas são ... muitas
A entrada e a saída podem ter qualquer forma razoável. A contagem de bytes mais baixa em cada idioma vence. Aplicam-se as regras padrão de código de golfe .
sum
em si não foi uma boa idéia para tentar resolver esse inquérito ...11
de12
para16
. Claro que se sentir livre para corrigir isso, se eu não entendi a sua intençãoRespostas:
Python 2 ,
4645 bytesgraças ao xnor por -1 byte
Experimente online!
fonte
and/or
funciona e salva um byte:f=lambda n:n>0and f(n-2)+f(n-3)+f(n-5)or n==0
.Oásis , 9 bytes
Experimente online!
Explicação
fonte
Pitão , 9 bytes
Experimente aqui!
Pitão , 16 bytes
Experimente aqui
Quão?
Gera os fatores primos de 30 , ou seja, [2, 3, 5] , obtém o conjunto de repetições N vezes, remove elementos duplicados, soma cada lista e conta as ocorrências de N nela .
Para cada parição inteira p , verifica se p é igual a p ∩ primefac (30) . Ele mantém apenas aqueles que atendem a essa condição e, para cada partição remanescente k , obtém a lista de permutações de k , nivela a lista resultante em 1 nível, desduplica-a e recupera o comprimento.
fonte
Gelatina , 11 bytes
Experimente online!
Como funciona
fonte
³
comH
(em seguida, ele irá expirar em 12 em vez de 6)Perl, 38 bytes
Inclui
+1
parap
Interessante o suficiente para usar
\1
para forçar o retorno. Normalmente eu uso,^
mas o otimizador de expressões regulares parece muito inteligente para isso e dá resultados muito baixos. Provavelmente terei que começar a fornecer números de versão perl ao usar esse truque, pois o otimizador pode mudar a cada versão. Isso foi testado emperl 5.26.1
Isso
49
é eficiente e pode realmente lidarX=100
(mas estourarX=1991
)fonte
C, 41 bytes
Experimente online!
fonte
JavaScript (ES6), 32 bytes
O mesmo algoritmo da resposta Python dos ovs .
Casos de teste
Mostrar snippet de código
fonte
R ,
564947 bytesAbordagem recursiva da resposta do ovs . Giuseppe raspou esses dois bytes finais para fazer 47.
Experimente online!
fonte
0
(eu não considerei isso antes), pois os unários também o+
farãonumeric
.MATL , 15 bytes
Muito ineficiente: a memória necessária é exponencial.
Experimente online!
Como funciona
fonte
05AB1E , 10 bytes
Experimente online!
fonte
Ruby , 41 bytes
Experimente online!
Esta é uma solução recursiva, o ser chamada recurcive:
[n-5,n-2,n-3].sum(&f)
.fonte
Pari / GP , 36 bytes
Experimente online!
Mais longo, mas mais eficiente:
Pari / GP , 37 bytes
Experimente online!
fonte
Gelatina , 21 bytes
Experimente online!
Certamente pode ser jogado golfe
fonte
Pitão, 12 bytes
Isso é terrivelmente ineficiente e atinge o limite de memória para entradas acima de 5.
Experimente online
Explicação
fonte
Próton , 32 bytes
Experimente online!
Mesma abordagem como resposta OVS .
fonte
Wolfram Language (Mathematica) , 43 bytes
Experimente online!
Explicação:
FrobeniusSolve
calcula todas as soluções da soma não ordenada2a + 3b + 5c = n
e depoisMultinomial
descobre quantas maneiras podemos ordenar essas somas.Ou podemos simplesmente copiar a solução de todos os outros pela mesma contagem de bytes:
fonte
Haskell , 40 bytes
Experimente online!
fonte