Contexte:
Les opérations standard comme l’addition et la multiplication de base dans le monde réel fonctionnent comme suit:
12 + 123 = 135
et
12 * 123 = 1476
Ce n'est pas intéressant et ennuyeux! Beaucoup d'écoles interprètent déjà cela comme pratique, pratique, pratique d'algorithmes formels. Cela implique un régime mathématique mathématique assez rigide et ennuyeux et n’est pas ce que l’on envisage dans ce défi. Préparez-vous à vous amuser sur notre site bien-aimé.
Considérons le processus d’ajout de deux nombres entiers positifs, puis l’ajout de tous les chiffres du résultat. Répéter avec l'addition jusqu'à obtenir un seul chiffre. Par exemple:
- Le résultat de
12 + 123
est 135. - En ajoutant tous les chiffres de 135, nous obtenons
1 + 3 + 5 = 9
.
Le nombre d'étapes requis pour obtenir une valeur à un chiffre 9 dans cette addition répétée est égal à 2.
Comme avec le processus précédent de l'addition, la multiplication de deux nombres entiers positifs suit le même processus. Multipliez tous les chiffres de son résultat, puis répétez ce processus jusqu'à ce qu'il ne reste qu'un seul chiffre. Prenons l'exemple ci-dessus:
- Le résultat de
12 * 123
est 1476. - Multipliez tous les chiffres de 1476 que nous obtenons
1 * 4 * 7 * 6 = 168
. - Multiplie encore tous les chiffres de 168 que nous obtenons
1 * 6 * 8 = 48
. - Multiplie encore tous les chiffres de 48 que nous obtenons
4 * 8 = 32
. - Multiplie encore tous les chiffres de 32 obtenus
3 * 2 = 6
.
Le nombre d'étapes requis pour obtenir une valeur à un chiffre 6 cette multiplication répétée est 5.
Par souci de ce défi et en évitant toute utilisation abusive des notations mathématiques, je vous présente ces deux notations factices: (+)
et (*)
, mais vous pouvez utiliser la notation de votre choix , qui fonctionne comme suit:
- L'opération du processus d'addition répétée pour obtenir une valeur unique est
12 (+) 123 = 9
. - L'opération du processus de multiplication répétée pour obtenir une valeur unique est
12 (*) 123 = 6
.
Défi:
Le défi consiste à écrire un programme ou une fonction pouvant exécuter les deux opérations décrites dans la section Arrière-plan: (+)
et (*)
.
Contribution:
Les entrées du programme ou de la fonction sont deux entiers positifs et une opération soit (+)
et (*)
. Le format de l'entrée est un choix arbitraire du programmeur . Vous pouvez formater l'entrée, par exemple, a (+) b
ou F(a, (+), b)
ou tout autre format de votre choix.
Sortie:
La sortie du programme ou de la fonction doit contenir le résultat de l'opération et le nombre d'étapes requises avec le format freestyle que vous le souhaitez.
Cas de test (ignorer les formats d'entrée et de sortie):
81 (+) 31 --> (4 ; 2)
351 (+) 14568 --> (6 ; 3)
21 (*) 111 --> (8 ; 3)
136 (*) 2356 --> (0 ; 2)
Règles générales:
- C'est du code-golf , donc la réponse la plus courte en octets remporte le défi.
Ne laissez pas les esolangs vous dissuader de poster une réponse dans des langues normales. Profitez de ce défi en fournissant une réponse aussi courte que possible avec votre langage de programmation. Si vous postez une réponse intelligente et une explication claire, votre réponse sera appréciée (d'où les votes positifs) quel que soit le langage de programmation que vous utilisez. - Les règles standard s'appliquent à votre réponse. Vous êtes donc autorisé à utiliser STDIN / STDOUT, fonctions / méthode avec les paramètres appropriés, programmes complets, etc. Vous avez le choix.
- Si possible, votre programme peut gérer correctement les grands nombres. Sinon, ça ira.