Formas de llegar al número


10

Teniendo en cuenta la entrada del primer número y el segundo número (ambos números enteros positivos, cero exluded), determinar de cuántas maneras se puede hacer la segunda de la primera, mediante las acciones siguientes: +1, +2y *3. Las operaciones simplemente se aplican de izquierda a derecha.

Ejemplos:

  1. Entrada: 1 2. Salida: 1. Es decir, solo podías 2hacerlo +1, así que de una manera.

  2. Entrada: 1 3. Salida: 3. Es decir, podrías obtener 3 haciendo +2o o +1+1, o*3

  3. Entrada: 1 4. Salida: 4.

  4. Entrada: 2 6. Salida: 6.

  5. Entrada: 2 7. Salida: 9.

  6. Entrada: 1 10. Salida: 84.

En caso de que no haya formas, por ejemplo 100 100, o 100 80, la salida es 0.

También puede tomar la entrada como una matriz o cadena con cualquier separador conveniente.

La solución más corta gana.


Parece que podría ser un engaño, lo siento si lo es, no encontré una pregunta similar.
nicael

44
¿Qué pasa con las entradas para las cuales la respuesta debe ser infinita? Por ejemplo, cualquier entrada donde el primer entero sea negativo, ya que puede multiplicar por tres y luego volver al número original y repetir tantas veces como desee.
Peter Taylor

1
@Patrick: Sin embargo, tiene sentido. A partir de -1 y yendo a 0, puede aplicar *3 +2 +1tantas veces como desee, luego aplicar +1para llegar a 0.
Deusovi

Comentario de Peter Fair, restringido a números positivos.
nicael

Respuestas:


1

Pyth - 26 24 bytes

Parece que hay un error en Pyth que hace que tome entradas en el orden incorrecto, pero de todos modos no debería importar.

/m.vj;+sdzs^Lc3"+1+2*3"S

Test Suite .

( 1 10Tiempo de espera en línea, pero funcionó en mi computadora).


¿Tiempo de espera agotado, con números tan pequeños? Huh
nicael

@nicael sí, hay sólo 59K maneras que puedo comprobar 10, pero es muuuuy lento Pyth
Maltysen

6

Javascript ES6, 45 44 bytes

f=(a,b=B)=>a<(B=b)?f(a+1)+f(a+2)+f(a*3):a==b

Ejecuciones de ejemplo:

f(1,2)  -> 1
f(2,6)  -> 6
f(1 10) -> 84

1
Uso interesante de los parámetros predeterminados, aunque es cierto que aquí no guarda ningún byte. =By (B=)( bomitido a propósito) tiene 6 caracteres y la alternativa es pasar ,b3 veces a las llamadas recursivas, que también tiene 6 caracteres. De todos modos, buen trabajo.
Patrick Roberts

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.