Spiel mit angehängten Zahlen
Schreiben Sie eine Funktion / ein Programm, das 2 ganzzahlige Parameter, ganzzahlige Parameter oder ganzzahlige Variablen , eine Startnummer und eine maximale Anzahl von Iterationen akzeptiert. Der Code sollte das folgende Spielbeispiel ausführen, um eine neue Nummer zu konstruieren, und wiederholen, bis die Nummer eine einzelne Ziffer übrig hat. z.B.
3 7 2 = (3 + 7) & (7 + 2) = 10 9
1 0 9 = (1 + 0) & (0 + 9) = 1 9
1 9 = (1 + 9) = 10
1 0 = (1 + 0) = 1
Im Grunde genommen wird jede einzelne Ziffer genommen und dem Nachbarn hinzugefügt, und dann wird auch das Ergebnis der nächsten Addition angehängt.
Die maximale Iterationszahl dient zum Schutz vor Endlosschleifen. Wenn die maximale Anzahl erreicht ist, sollte der Code die letzten 5 Ziffernschritte ausgeben. Die gleiche Ausgabe sollte beim Beenden durch Erreichen einer einzelnen Ziffer erfolgen. Wenn weniger als 5 Schritte aufgetreten sind, geben Sie nur die gültigen Zahlen aus.
Die Ausgabe sollte wie folgt aussehen ( Step: Number) und die letzten 5 Schritte der abgeschlossenen oder beendeten Schritte enthalten:
func(3541, 50) würde genau dieses Ausgabeformat erzeugen:
6: 1411
7: 552
8: 107
9: 17
10: 8
func(3541, 5) würde produzieren:
1: 895
2: 1714
3: 885
4: 1613
5: 774
Die gesamte Berechnung ist:
1: 895
2: 1714
3: 885
4: 1613
5: 774
6: 1411
7: 552
8: 107
9: 17
10: 8
Wenn weniger als 5 Schritte vorhanden sind, drucken Sie einfach die ausgeführten Schritte aus.
Verwenden Sie nur eingebaute Bibliotheken. Die Parameter können von jedem Ort aus eingegeben werden (was für Ihre Sprache am einfachsten ist). Keine Begrenzung für die maximale Ganzzahlgröße, und wenn es Überläufe gibt, lassen Sie es abstürzen.
Da dies aus Puzzle-Sicht nicht allzu schwierig ist, gebe ich bis Sonntag, den 25., 20.00 Uhr (UTC + 8) Zeit, um Einsendungen für die akzeptierte Antwort zu berücksichtigen. An diesem Punkt wird die kürzeste Sprache der Gewinner sein.
BEARBEITEN:
Herzlichen Glückwunsch an Howard, der mit einer Antwort von 48 GolfScript gewonnen hat .
Besonders zu erwähnen ist der 2. Platz Marinus mit einer 66 APL Antwort .
Mein persönlicher Favorit (voreingenommen gegenüber JavaScript) war die Antwort von core1024 .
func(3541, 5)soll 5 Schritte oder 10 drucken?