Sposoby dotarcia do numeru


10

Ze względu na wejście pierwszego numeru oraz liczbę sekund (zarówno dodatnie liczby całkowite, zero wykluczono), określić w jak wiele sposobów można zrobić drugi z pierwszego, stosując następujące czynności: +1, +2i *3. Operacje są po prostu stosowane od lewej do prawej.

Przykłady:

  1. Wejście: 1 2. Wyjście: 1. Czyli, można uzyskać tylko 2poprzez działanie +1, więc jeden sposób.

  2. Wejście: 1 3. Wyjście: 3. To znaczy, możesz zdobyć 3, wykonując +2albo +1+1, albo*3

  3. Wejście: 1 4. Wyjście: 4.

  4. Wejście: 2 6. Wyjście: 6.

  5. Wejście: 2 7. Wyjście: 9.

  6. Wejście: 1 10. Wyjście: 84.

W przypadku braku możliwości, np. 100 100Lub 100 80, wyjście jest 0.

Możesz również wziąć dane wejściowe jako tablicę lub ciąg znaków z dowolnym wygodnym separatorem.

Najkrótsze rozwiązanie wygrywa.


Wygląda na to, że może to być dupek, przepraszam, jeśli tak - nie znalazłem podobnego pytania.
Nicica

4
Co z danymi wejściowymi, dla których odpowiedź powinna być nieskończona? Np. Wszelkie dane wejściowe, w których pierwsza liczba całkowita jest ujemna, ponieważ można pomnożyć przez trzy, a następnie powrócić do pierwotnej liczby i powtórzyć tyle razy, ile chcesz.
Peter Taylor

1
@Patrick: Ma to jednak sens. Zaczynając od -1 i przechodząc do 0, możesz aplikować *3 +2 +1tyle razy, ile chcesz, a następnie aplikować, +1aby dostać się do 0.
Deusovi

@Peter Uczciwa uwaga, ograniczona do liczb dodatnich.
Nicola

Odpowiedzi:


1

Pyth - 26 24 bajtów

Wygląda na to, że w Pyth występuje błąd, który powoduje, że pobiera dane wejściowe w niewłaściwej kolejności, ale i tak nie powinno to mieć znaczenia.

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

Pakiet testowy .

( 1 10upłynął limit czasu online, ale działał na moim komputerze).


Przekroczono limit czasu przy tak małych liczbach? Huh
Nicica

@nicael tak, jest tylko 59K sposobów, które sprawdzam 10, ale pyth jest powolny
Maltysen

6

JavaScript ES6, 45 44 bajtów

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

Przykładowe przebiegi:

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

1
Ciekawe użycie parametrów domyślnych, choć wprawdzie nie zapisuje tutaj żadnych bajtów. =Bi (B=)( bcelowo pominięty) ma 6 znaków, a alternatywą jest przekazywanie ,b3 razy do wywołań rekurencyjnych, które również ma 6 znaków. W każdym razie dobra robota.
Patrick Roberts

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.