Wege zur Nummer


10

Bestimmen Sie anhand der Eingabe der ersten und der zweiten Zahl (beide positive ganze Zahlen, Null ausgeschlossen), auf wie viele Arten Sie die zweite aus der ersten machen können, indem Sie die folgenden Aktionen ausführen : +1, +2und *3. Operationen werden einfach von links nach rechts angewendet.

Beispiele:

  1. Eingabe : 1 2. Ausgabe : 1. Dh, man könnte nur erhalten , 2indem Sie +1, so eine Art und Weise.

  2. Eingabe : 1 3. Ausgabe : 3. Dh du könntest 3 bekommen, indem du entweder +2oder tust +1+1oder*3

  3. Eingabe : 1 4. Ausgabe : 4.

  4. Eingabe : 2 6. Ausgabe : 6.

  5. Eingabe : 2 7. Ausgabe : 9.

  6. Eingabe : 1 10. Ausgabe : 84.

Falls es keine Möglichkeiten gibt, zB 100 100oder 100 80, ist die Ausgabe 0.

Sie können die Eingabe auch als Array oder als Zeichenfolge mit einem beliebigen Trennzeichen verwenden.

Die kürzeste Lösung gewinnt.


Es sieht so aus, als könnte es ein Betrüger sein, tut mir leid, wenn es so ist - ich habe keine ähnliche Frage gefunden.
Nicael

4
Was ist mit Eingaben, für die die Antwort unendlich sein sollte? ZB jede Eingabe, bei der die erste Ganzzahl negativ ist, da Sie mit drei multiplizieren und dann auf die ursprüngliche Zahl zurücksetzen und so oft wiederholen können, wie Sie möchten.
Peter Taylor

1
@Patrick: Es macht aber Sinn. Ausgehend von -1 bis 0 können Sie sich *3 +2 +1so oft bewerben +1, wie Sie möchten, und sich dann bewerben , um auf 0 zu kommen.
Deusovi

@ Peter Fair Bemerkung, beschränkt auf positive Zahlen.
Nicael

Antworten:


1

Pyth - 26 24 Bytes

Es scheint einen Fehler in Pyth zu geben, der dazu führt, dass Eingaben in der falschen Reihenfolge vorgenommen werden, aber es sollte sowieso keine Rolle spielen.

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

Testsuite .

( 1 10Zeitüberschreitung online, aber auf meinem Computer funktioniert).


Zeitüberschreitung bei so kleinen Zahlen? Huh.
Nicael

@nicael Ja, es gibt nur 59K Möglichkeiten, nach denen ich suche 10, aber Python ist slooooooow
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

Beispielläufe:

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

1
Interessante Verwendung von Standardparametern, obwohl hier zugegebenermaßen keine Bytes gespeichert werden. =Bund (B=)( babsichtlich weggelassen) ist 6 Zeichen und die Alternative besteht darin, ,b3 Mal an die rekursiven Aufrufe zu übergeben, die ebenfalls 6 Zeichen sind. Wie auch immer, gute Arbeit.
Patrick Roberts

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.