Hintergrund:
Standardoperationsmathematik wie einfache Addition und Multiplikation in der realen Welt funktioniert folgendermaßen:
12 + 123 = 135
und
12 * 123 = 1476
Das ist nicht interessant und langweilig! Viele Schulen interpretieren dies bereits als Üben, Üben, Üben formaler Algorithmen. Dies impliziert eine ziemlich starre und langweilige mathematische Diät und ist nicht das, was in dieser Herausforderung beabsichtigt ist. Machen Sie sich bereit, um Spaß auf unserer geliebten Seite zu haben.
Betrachten Sie den Vorgang des Addierens zweier positiver ganzzahliger Zahlen und fügen Sie dann alle Ziffern des Ergebnisses erneut hinzu. Wiederholen Sie den Vorgang mit der Addition, bis nur noch eine Ziffer erhalten wird. Zum Beispiel:
- Das Ergebnis von
12 + 123
ist 135. - Addiert man alle Ziffern von 135, so erhält man
1 + 3 + 5 = 9
.
Die Anzahl der Schritte, die erforderlich sind, um bei dieser wiederholten Addition einen einstelligen Wert 9 zu erhalten, beträgt 2.
Wie beim vorherigen Additionsvorgang folgt die Multiplikation zweier positiver ganzzahliger Zahlen demselben Vorgang. Multiplizieren Sie alle Ziffern des Ergebnisses und wiederholen Sie diesen Vorgang, bis nur noch eine einzige Ziffer übrig bleibt. Nehmen Sie das obige Beispiel:
- Das Ergebnis von
12 * 123
ist 1476. - Multiplizieren Sie alle Ziffern von 1476, die wir erhalten
1 * 4 * 7 * 6 = 168
. - Multiplizieren Sie erneut alle Ziffern von 168, die wir erhalten
1 * 6 * 8 = 48
. - Multiplizieren Sie noch einmal alle 48 Stellen, die wir erhalten
4 * 8 = 32
. - Multiplizieren Sie noch einmal alle Ziffern von 32, die wir erhalten
3 * 2 = 6
.
Die Anzahl der Schritte, die erforderlich sind, um bei dieser wiederholten Multiplikation einen einstelligen Wert 6 zu erhalten, beträgt 5.
Um dieser Herausforderung willen und um einen Missbrauch von mathematischen Notationen zu vermeiden, füge ich diese beiden Dummy-Notationen ein: (+)
und (*)
, aber Sie können jede beliebige Notation verwenden , die wie folgt funktioniert:
- Die Operation des wiederholten Additionsprozesses, um einen einzelnen Wert zu erhalten, ist
12 (+) 123 = 9
. - Die Operation des wiederholten Multiplikationsprozesses, um einen einzelnen Wert zu erhalten, ist
12 (*) 123 = 6
.
Herausforderung:
Die Herausforderung besteht darin, entweder ein Programm oder eine Funktion zu schreiben, die beide im Abschnitt "Hintergrund" erläuterten Operationen ausführen kann : (+)
und (*)
.
Eingang:
Die Eingänge des Programms oder der Funktion sind zwei positive ganze Zahlen und eine Operation entweder (+)
und (*)
. Das Format der Eingabe ist eine willkürliche Wahl des Programmierers . Sie können die Eingabeformat zum Beispiel a (+) b
oder F(a, (+), b)
oder ein beliebiges Format Sie wünschen.
Ausgabe:
Die Ausgabe des Programms oder der Funktion muss das Ergebnis der Operation und die Anzahl der erforderlichen Schritte im Freestyle-Format enthalten.
Testfälle (ignorieren Sie das Eingabe- und Ausgabeformat):
81 (+) 31 --> (4 ; 2)
351 (+) 14568 --> (6 ; 3)
21 (*) 111 --> (8 ; 3)
136 (*) 2356 --> (0 ; 2)
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes die Herausforderung.
Lassen Sie sich nicht von Esolangs davon abhalten, eine Antwort in regulären Sprachen zu veröffentlichen. Genießen Sie diese Herausforderung, indem Sie mit Ihrer Programmiersprache eine möglichst kurze Antwort geben. Wenn Sie eine clevere Antwort und eine klare Erklärung abgeben, wird Ihre Antwort geschätzt (daher die positiven Stimmen), unabhängig davon, welche Programmiersprache Sie verwenden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern, vollständige Programme usw. verwenden. Sie haben die Wahl.
- Wenn möglich, kann Ihr Programm große Zahlen richtig verarbeiten. Wenn nicht, ist das in Ordnung.