Jogo de números anexados
Escreva uma função / programa que utilize 2 parâmetros inteiros, parâmetros inteiros ou variáveis inteiras , um número inicial e uma contagem máxima de iterações. O código deve executar o exemplo de jogo a seguir para construir um novo número e repetir até que o número fique com um único dígito. por exemplo.
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
Basicamente, pegue cada dígito individual e adicione-o ao seu vizinho, acrescentando também o resultado da próxima adição.
A contagem máxima de iterações é para proteger loops infinitos e, quando o máximo for atingido, o código deverá despejar as últimas 5 etapas numéricas. A mesma saída deve ocorrer ao terminar, atingindo um único dígito. Se ocorrerem menos de 5 etapas, apenas produza os números válidos.
A saída deve aparecer como ( Step: Number) incluindo as últimas 5 etapas das etapas concluídas ou finalizadas:
func(3541, 50) produziria esse formato exato de saída:
6: 1411
7: 552
8: 107
9: 17
10: 8
func(3541, 5) produziria:
1: 895
2: 1714
3: 885
4: 1613
5: 774
Todo o cálculo é:
1: 895
2: 1714
3: 885
4: 1613
5: 774
6: 1411
7: 552
8: 107
9: 17
10: 8
Se houver menos de 5 etapas, imprima essas etapas.
Use apenas bibliotecas integradas, os parâmetros podem ser de qualquer lugar (o que for mais fácil para o seu idioma preferido). Não há limite para o tamanho máximo inteiro e, se houver estouros, deixe travar.
Dado que isso não é muito difícil do ponto de vista de um quebra-cabeça, darei até 25 de domingo, 20:00 (UTC + 8), para que as submissões sejam consideradas para a resposta aceita, quando o menor de qualquer idioma será o vencedor.
EDITAR:
Parabéns a Howard por vencer com uma resposta de 48 GolfScript .
Menção especial ao 2º lugar marinus com uma resposta de 66 APL .
Meu favorito pessoal (sendo influenciado pelo JavaScript) foi a resposta do core1024 .
func(3541, 5)suposto imprimir 5 etapas ou 10?