Disarium numbers: Difference between revisions

Add CLU
m (→‎{{header|APL}}: start at 0)
(Add CLU)
Line 690:
{{out}}
<pre>0 1 2 3 4 5 6 7 8 9 89 135 175 518 598 1306 1676 2427</pre>
 
=={{header|CLU}}==
<syntaxhighlight lang="clu">is_disarium = proc (n: int) returns (bool)
digits: array[int] := array[int]$[]
number: int := n
while n > 0 do
array[int]$addl(digits, n//10)
n := n / 10
end
array[int]$set_low(digits, 1)
digit_power_sum: int := 0
for i: int in array[int]$indexes(digits) do
digit_power_sum := digit_power_sum + digits[i] ** i
end
return(digit_power_sum = number)
end is_disarium
 
disaria = iter (amount: int) yields (int)
n: int := 0
while amount > 0 do
if is_disarium(n) then
amount := amount - 1
yield(n)
end
n := n + 1
end
end disaria
 
start_up = proc ()
po: stream := stream$primary_output()
for n: int in disaria(19) do
stream$putl(po, int$unparse(n))
end
end start_up</syntaxhighlight>
{{out}}
<pre>0
1
2
3
4
5
6
7
8
9
89
135
175
518
598
1306
1676
2427
2646798</pre>
 
=={{header|D}}==
2,114

edits