Escriba el código más corto que pueda para resolver el siguiente problema:
Entrada:
Un entero X con 2 <= X
yX <= 100
Salida:
Combinaciones totales de 2, 3 y 5 (se permite la repetición, el orden importa) cuya suma es igual a X.
Ejemplos:
Entrada: 8
Salida: 6
porque las combinaciones válidas son:
3+5
5+3
2+2+2+2
2+3+3
3+2+3
3+3+2
Entrada: 11
Salida: 16
porque las combinaciones válidas son
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
Salida: 1127972743581281
porque las combinaciones válidas son ... muchas
La entrada y salida pueden ser de cualquier forma razonable. El conteo de bytes más bajo en cada idioma gana. Aplican reglas estándar de código de golf .
sum
en ellos no fue una buena idea para tratar de resolver esa pregunta ...11
de12
a16
. Por supuesto, siéntete libre de arreglar esto si noRespuestas:
Python 2 ,
4645 bytesgracias a xnor por -1 byte
Pruébalo en línea!
fuente
and/or
las obras y ahorra un byte:f=lambda n:n>0and f(n-2)+f(n-3)+f(n-5)or n==0
.Oasis , 9 bytes
Pruébalo en línea!
Explicación
fuente
Pyth , 9 bytes
Pruébalo aquí!
Pyth , 16 bytes
Pruébalo aquí
¿Cómo?
Genera los factores primos de 30 , a saber [2, 3, 5] , obtiene el conjunto de potencias repetidas N veces, elimina elementos duplicados, suma cada lista y cuenta las ocurrencias de N en eso.
Para cada parición entera p , verifica si p es igual a p ∩ primefac (30) . Solo mantiene aquellos que satisfacen esta condición, y para cada partición k restante , obtiene la lista de permutaciones de k , aplana la lista resultante en 1 nivel, la deduplica y recupera la longitud.
fuente
Jalea , 11 bytes
Pruébalo en línea!
Cómo funciona
fuente
³
conH
(luego expirará a las 12 en lugar de a las 6)Perl, 38 bytes
Incluye
+1
parap
Lo suficientemente interesante que tengo que usar
\1
para forzar el retroceso. Usualmente uso,^
pero el optimizador de expresiones regulares parece demasiado inteligente para eso y da resultados demasiado bajos. Probablemente tendré que comenzar a dar números de versión de Perl cuando use este truco ya que el optimizador puede cambiar en cada versión. Esto fue probado enperl 5.26.1
Esto
49
es eficiente y realmente puede manejarX=100
(pero se desbordaX=1991
)fuente
C, 41 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 32 bytes
Mismo algoritmo que en la respuesta Python de ovs .
Casos de prueba
Mostrar fragmento de código
fuente
R ,
564947 bytesEnfoque recursivo de la respuesta de ovs . Giuseppe eliminó esos dos bytes finales para que sea 47.
Pruébalo en línea!
fuente
0
(no lo consideré antes), ya que unario también+
lo obligaránumeric
.MATL , 15 bytes
Muy ineficiente: la memoria requerida es exponencial.
Pruébalo en línea!
Cómo funciona
fuente
05AB1E , 10 bytes
Pruébalo en línea!
fuente
Ruby , 41 bytes
Pruébalo en línea!
Esta es una solución recursiva, el ser llamado recurcive:
[n-5,n-2,n-3].sum(&f)
.fuente
Pari / GP , 36 bytes
Pruébalo en línea!
Más largo, pero más eficiente:
Pari / GP , 37 bytes
Pruébalo en línea!
fuente
Jalea , 21 bytes
Pruébalo en línea!
Seguramente se puede jugar al golf
fuente
Pyth, 12 bytes
Esto es terriblemente ineficiente y alcanza el límite de memoria para entradas superiores a 5.
Pruébalo en línea
Explicación
fuente
Protón , 32 bytes
Pruébalo en línea!
El mismo enfoque que la respuesta de los ovs .
fuente
Wolfram Language (Mathematica) , 43 bytes
Pruébalo en línea!
Explicación:
FrobeniusSolve
calcula todas las soluciones de la suma desordenada2a + 3b + 5c = n
, luegoMultinomial
calcula cuántas formas podemos ordenar esas sumas.O podríamos copiar la solución de todos los demás para el mismo número de bytes:
fuente
Haskell , 40 bytes
Pruébalo en línea!
fuente