Iterated digits squaring: Difference between revisions

Added 11l
(Added Quackery.)
(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}}==
1,481

edits