Iterated digits squaring: Difference between revisions
Added 11l
(Added Quackery.) |
Alextretyak (talk | contribs) (Added 11l) |
||
Line 28:
* [[Digital root/Multiplicative digital root]]
<br><br>
=={{header|11l}}==
{{trans|Python}}
<lang 11l>F next_step(=x)
V result = 0
L x > 0
result += (x % 10) ^ 2
x I/= 10
R result
F check(number)
V candidate = 0
L(n) number
candidate = candidate * 10 + n
L candidate != 89 & candidate != 1
candidate = next_step(candidate)
I candidate == 89
V digits_count = [0] * 10
L(d) number
digits_count[d]++
V result = factorial(number.len)
L(c) digits_count
result I/= factorial(c)
R result
R 0
V limit = 100000000
V cache_size = Int(ceil(log10(limit)))
assert(10 ^ cache_size == limit)
V number = [0] * cache_size
V result = 0
V i = cache_size - 1
L
I i == 0 & number[i] == 9
L.break
I i == cache_size - 1 & number[i] < 9
number[i]++
result += check(number)
E I number[i] == 9
i--
E
number[i]++
L(j) i + 1 .< cache_size
number[j] = number[i]
i = cache_size - 1
result += check(number)
print(result)</lang>
{{out}}
<pre>
85744333
</pre>
=={{header|Ada}}==
|