Modi per arrivare al numero


10

Dato l'ingresso del primo numero e il secondo numero (entrambi interi positivi, zero ESCLUSA), determinare in quanti modi si potrebbe fare il secondo out del primo, con le azioni seguenti: +1, +2e *3. Le operazioni vengono semplicemente applicate da sinistra a destra.

Esempi:

  1. Ingresso: 1 2. Uscita: 1. Cioè, puoi solo 2farlo +1, quindi in un modo.

  2. Ingresso: 1 3. Uscita: 3. Cioè, potresti ottenerne 3 facendo +2o +1+1, oppure*3

  3. Ingresso: 1 4. Uscita: 4.

  4. Ingresso: 2 6. Uscita: 6.

  5. Ingresso: 2 7. Uscita: 9.

  6. Ingresso: 1 10. Uscita: 84.

Nel caso in cui non ci siano modi, ad esempio 100 100, o 100 80, l'output è 0.

Puoi anche prendere input come un array o stringa con qualsiasi comodo separatore.

Vince la soluzione più breve.


Sembra che potrebbe essere un inganno, scusate se lo è - non ho trovato una domanda simile.
nicael,

4
Che dire degli input per i quali la risposta dovrebbe essere infinita? Ad esempio, qualsiasi input in cui il primo numero intero è negativo, poiché è possibile moltiplicare per tre, quindi tornare al numero originale e ripetere tutte le volte che si desidera.
Peter Taylor,

1
@Patrick: Ha senso però. A partire da -1 e andando a 0, puoi applicare *3 +2 +1tutte le volte che vuoi, quindi applicare +1per arrivare a 0.
Deusovi

Osservazione di @Peter Fair, limitata a numeri positivi.
nicael,

Risposte:


1

Pyth - 26 24 byte

Sembra che ci sia un bug in Pyth che lo fa prendere input nell'ordine sbagliato, ma non dovrebbe comunque importare.

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

Test Suite .

( 1 10scaduto online, ma ha funzionato sul mio computer).


È scaduto, con numeri così piccoli? Huh.
nicael,

@nicael sì, ci sono solo 59K modi in cui cerco 10, ma pyth è slooooooow
Maltysen,

6

Javascript ES6, 45 44 byte

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

Esempi di esecuzione:

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

1
Uso interessante dei parametri predefiniti, anche se è vero che non salva alcun byte qui. =Be (B=)( bomesso di proposito) è di 6 caratteri e l'alternativa passa ,b3 volte alle chiamate ricorsive che sono anche 6 caratteri. Comunque, buon lavoro.
Patrick Roberts,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.