Juego de Números Anexos
Escriba una función / programa que tome 2 parámetros enteros parámetros enteros o variables enteras , un número de inicio y un recuento máximo de iteraciones. El código debe realizar el siguiente ejemplo de juego para construir un nuevo número y repetirlo hasta que quede un solo dígito. p.ej.
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
Básicamente, tomar cada dígito individual y agregarlo a su vecino, y luego agregar el resultado de la próxima adición también.
El recuento máximo de iteraciones es para proteger bucles infinitos, y cuando se alcanza el máximo, el código debe volcar los últimos 5 pasos numéricos. Debe producirse la misma salida al finalizar al alcanzar un solo dígito. Si ocurrieron menos de 5 pasos, solo envíe los números válidos.
La salida debería aparecer como ( Step: Number) incluyendo los últimos 5 pasos de los pasos terminados o terminados:
func(3541, 50) produciría este formato de salida exacto:
6: 1411
7: 552
8: 107
9: 17
10: 8
func(3541, 5) produciría:
1: 895
2: 1714
3: 885
4: 1613
5: 774
Todo el cálculo es:
1: 895
2: 1714
3: 885
4: 1613
5: 774
6: 1411
7: 552
8: 107
9: 17
10: 8
Si hay menos de 5 pasos, simplemente imprima los pasos dados.
Solo use bibliotecas incorporadas, los parámetros pueden ser desde cualquier lugar (lo que sea más fácil para el idioma que elija). No hay límite en el tamaño entero máximo, y si hay desbordamientos, déjelo bloquearse.
Dado que esto no es demasiado difícil desde el punto de vista del rompecabezas, daré hasta el domingo 25 a las 8 p.m. (UTC + 8) para que las propuestas sean consideradas para la respuesta aceptada, en cuyo punto el más corto de cualquier idioma será el ganador.
EDITAR:
Felicitaciones a Howard, que ganó con una respuesta de 48 GolfScript .
Mención especial al 2do lugar marinus con una respuesta de 66 APL .
Mi favorito personal (sesgado hacia JavaScript) fue la respuesta de core1024 .
func(3541, 5)supone que imprima 5 pasos o 10?