Disarium numbers: Difference between revisions
Content added Content deleted
(Added Lua version) |
imported>Maxima enthusiast No edit summary |
||
Line 1,937: | Line 1,937: | ||
{{out}} |
{{out}} |
||
<pre>{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, 1306, 1676, 2427, 2646798}</pre> |
<pre>{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, 1306, 1676, 2427, 2646798}</pre> |
||
=={{header|Maxima}}== |
|||
<syntaxhighlight lang="maxima"> |
|||
/* Function that returns a list of digits given a nonnegative integer */ |
|||
decompose(num) := block([digits, remainder], |
|||
digits: [], |
|||
while num > 0 do |
|||
(remainder: mod(num, 10), |
|||
digits: cons(remainder, digits), |
|||
num: floor(num/10)), |
|||
digits |
|||
)$ |
|||
disariump(n):=block( |
|||
decompose(n), |
|||
makelist(%%[i]^i,i,length(%%)), |
|||
apply("+",%%), |
|||
if n=%% then true)$ |
|||
disarium_count(len):=block([i:0,count:0,result:[]], |
|||
while count<len do (if disariump(i) then (result:endcons(i,result),count:count+1),i:i+1), |
|||
result)$ |
|||
/*Test cases */ |
|||
disarium_count(18); |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
[0,1,2,3,4,5,6,7,8,9,89,135,175,518,598,1306,1676,2427] |
|||
</pre> |
|||
=={{header|Miranda}}== |
=={{header|Miranda}}== |