Antecedentes:
Matemáticas de operación estándar como la suma y la multiplicación básicas en el mundo real funcionan así:
12 + 123 = 135
y
12 * 123 = 1476
¡Eso no es interesante y aburrido! Muchas escuelas ya están interpretando esto como práctica, práctica, práctica de algoritmos formales. Eso implica una dieta matemática bastante rígida y aburrida y no es lo que se pretende en este desafío. Prepárate para divertirte en nuestro querido sitio.
Considere el proceso de sumar dos números enteros positivos, luego agregue nuevamente todos los dígitos de su resultado. Repitiendo con la suma hasta que solo se obtenga un solo dígito. Por ejemplo:
- El resultado de
12 + 123
es 135. - Sumando todos los dígitos de 135 que obtenemos
1 + 3 + 5 = 9
.
El número de pasos necesarios para obtener un valor de un solo dígito 9 en esta suma repetida es 2.
Al igual que con el proceso anterior de la suma, la multiplicación de dos números enteros positivos sigue el mismo proceso. Multiplique todos los dígitos de su resultado y luego repita este proceso hasta que solo quede un solo dígito. Tome el ejemplo anterior:
- El resultado de
12 * 123
es 1476. - Multiplica todos los dígitos de 1476 que obtenemos
1 * 4 * 7 * 6 = 168
. - Multiplica nuevamente todos los dígitos de 168 que obtenemos
1 * 6 * 8 = 48
. - Multiplica nuevamente todos los dígitos de 48 que obtenemos
4 * 8 = 32
. - Multiplica una vez más todos los dígitos de 32 que obtenemos
3 * 2 = 6
.
El número de pasos necesarios para obtener un valor de un solo dígito 6 esta multiplicación repetida es 5.
Por el bien de este desafío y para evitar cualquier mal uso de las anotaciones matemáticas, presento estas dos anotaciones ficticias: (+)
y (*)
, pero puede usar cualquier notación que desee , que funciona de la siguiente manera:
- La operación del proceso de suma repetida para obtener un valor único es
12 (+) 123 = 9
. - La operación del proceso de multiplicación repetida para obtener un solo valor es
12 (*) 123 = 6
.
Desafío:
El desafío es escribir un programa o una función que pueda realizar ambas operaciones como se explica en la sección de antecedentes: (+)
y (*)
.
Entrada:
Las entradas del programa o la función son dos enteros positivos y una operación, (+)
y (*)
. El formato de la entrada es una elección arbitraria del programador . Puede dar formato a la entrada, por ejemplo, a (+) b
o F(a, (+), b)
, o cualquier formato que desee.
Salida:
La salida del programa o la función debe contener el resultado de la operación y la cantidad de pasos necesarios con el formato de estilo libre que desee.
Casos de prueba (ignore el formato de entrada y salida):
81 (+) 31 --> (4 ; 2)
351 (+) 14568 --> (6 ; 3)
21 (*) 111 --> (8 ; 3)
136 (*) 2356 --> (0 ; 2)
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana el desafío.
No dejes que esolangs te desanime de publicar una respuesta con idiomas regulares. Disfrute de este desafío proporcionando una respuesta lo más breve posible con su lenguaje de programación. Si publica una respuesta inteligente y una explicación clara, su respuesta será apreciada (de ahí los votos positivos) independientemente del lenguaje de programación que utilice. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados, programas completos, etc. La elección es suya.
- Si es posible, su programa puede manejar adecuadamente grandes números. Si no, eso estará bien.