Un numero triangolare è un numero che può essere espresso come la somma di numeri interi positivi consecutivi, a partire da 1. Possono anche essere espressi con la formula n(n + 1) / 2, dove nè un numero intero positivo.
La controparte digitangolare di un numero viene calcolata nel modo seguente:
- Dividi un numero in un array di cifre ad es
613 => [6 1 3] - Per ogni numero nell'array, calcolare il
nnumero triangolare th;[6 1 3] => [21 1 6] - Somma l'array risultante;
[21 1 6] => 28
Il tuo compito, dato un numero intero n, calcola ripetutamente nla controparte digitangolare, fino a quando il risultato è uguale a 1, quindi emetti tutti i valori che sono stati calcolati. È possibile generare i valori in qualsiasi ordine e con un'inclusione facoltativa del numero originale all'inizio dell'array. Questo è un codice-golf, quindi vince il codice più corto.
Casi test
23 => 9 45 25 18 37 34 16 22 6 21 4 10 1
72 => 31 7 28 39 51 16 22 6 21 4 10 1
55 => 30 6 21 4 10 1
78 => 64 31 7 28 39 51 16 22 6 21 4 10 1
613 => 28 39 51 16 22 6 21 4 10 1
8392 => 90 45 25 18 37 34 16 22 6 21 4 10 1
11111 => 5 15 16 22 6 21 4 10 1
8592025 => 117 30 6 21 4 10 1
999999999 => 405 25 18 37 34 16 22 6 21 4 10 1
141e abbia ncifre. Il valore massimo che può avere la sua controparte digitangolare è 45n, quindi digi-△(x) ≤ 45n < 45(1+log_10(x)), e per x > 141, abbiamo 45(1+log_10(x)) < x, quindi digi-△(x) ≤ x-1per x > 141, e una volta superato il 141limite, beh, la forza bruta si dimostra attraverso i programmi.