Disarium numbers: Difference between revisions

Add Miranda
(→‎OCaml: simplify)
(Add Miranda)
Line 1,812:
{{out}}
<pre>{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, 1306, 1676, 2427, 2646798}</pre>
 
=={{header|Miranda}}==
<syntaxhighlight lang="miranda">main :: [sys_message]
main = [Stdout (show (take 18 disaria)), Stdout "\n"]
 
disaria :: [num]
disaria = filter disarium [0..]
 
disarium :: num->bool
disarium n = n = sum (zipWith (^) (digits n) [1..])
 
digits :: num->[num]
digits 0 = [0]
digits n = reverse (digits' n)
where digits' 0 = []
digits' n = (n mod 10) : digits' (n div 10)
 
zipWith :: (* -> ** -> ***) -> [*] -> [**] -> [***]
zipWith f x y = map f' (zip2 x y)
where f' (x,y) = f x y </syntaxhighlight>
{{out}}
<pre>[0,1,2,3,4,5,6,7,8,9,89,135,175,518,598,1306,1676,2427]</pre>
 
=={{header|Modula-2}}==
Line 1,884 ⟶ 1,906:
1676
2427</pre>
 
=={{header|Nim}}==
<syntaxhighlight lang="nim">import strutils
2,114

edits