Comment arriver au numéro


10

Compte tenu de l'entrée du premier nombre et le deuxième nombre ( les deux nombres entiers positifs, zéro non inclus), déterminer combien de façons pourriez - vous faire le deuxième de la première, en utilisant les actions suivantes: +1, +2et *3. Les opérations sont simplement appliquées de gauche à droite.

Exemples:

  1. Entrée: 1 2. Sortie: 1. C'est-à-dire que vous ne pouvez y arriver 2qu'en faisant +1, donc dans un sens.

  2. Entrée: 1 3. Sortie: 3. C'est-à-dire, vous pouvez obtenir 3 en faisant +2ou +1+1, ou*3

  3. Entrée: 1 4. Sortie: 4.

  4. Entrée: 2 6. Sortie: 6.

  5. Entrée: 2 7. Sortie: 9.

  6. Entrée: 1 10. Sortie: 84.

Dans le cas où il n'y a aucun moyen, par exemple 100 100, ou 100 80, la sortie est 0.

Vous pouvez également prendre l'entrée comme un tableau ou une chaîne avec n'importe quel séparateur pratique.

La solution la plus courte l'emporte.


Il semble que ce pourrait être un dupe, désolé si c'est le cas - je n'ai pas trouvé une question similaire.
nicael

4
Qu'en est-il des entrées pour lesquelles la réponse devrait être infinie? Par exemple, toute entrée dont le premier entier est négatif, car vous pouvez multiplier par trois, puis incrémenter le nombre d'origine et répéter autant de fois que vous le souhaitez.
Peter Taylor

1
@ Patrick: Cela a du sens cependant. En partant de -1 et en passant à 0, vous pouvez postuler *3 +2 +1autant de fois que vous le souhaitez, puis postuler +1pour vous rendre à 0.
Deusovi

@Peter Fair remarque, limitée aux nombres positifs.
nicael

Réponses:


1

Pyth - 26 24 octets

Il semble y avoir un bug dans Pyth qui le fait prendre les entrées dans le mauvais ordre, mais cela ne devrait pas avoir d'importance de toute façon.

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

Suite de tests .

( 1 10expiré en ligne, mais a fonctionné sur mon ordinateur).


Expiré, avec un si petit nombre? Huh.
nicael

@nicael ouais, il n'y a que 59K façons que je vérifie 10, mais pyth est slooooooow
Maltysen

6

Javascript ES6, 45 44 octets

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

L'exemple s'exécute:

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

1
Utilisation intéressante des paramètres par défaut, mais il est vrai que cela n'économise aucun octet ici. =Bet (B=)( bomis exprès) est de 6 caractères et l'alternative passe ,b3 fois aux appels récursifs qui est également de 6 caractères. Quoi qu'il en soit, bon travail.
Patrick Roberts

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.