Disarium numbers: Difference between revisions
Content added Content deleted
(Add C# implementation) |
Not a robot (talk | contribs) (add Refal) |
||
Line 3,063: | Line 3,063: | ||
=={{header|Refal}}== |
|||
<syntaxhighlight lang="refal">$ENTRY Go { |
|||
= <FindDisarium 19 0>; |
|||
}; |
|||
Digits { |
|||
0 = ; |
|||
s.N, <Divmod s.N 10>: (s.R) s.D = <Digits s.R> s.D; |
|||
}; |
|||
Pow { |
|||
s.N 0 = 1; |
|||
s.N s.P = <* s.N <Pow s.N <- s.P 1>>>; |
|||
}; |
|||
PowSum { |
|||
() e.P = 0; |
|||
(s.I e.X) e.P = <+ <Pow s.I e.P> <PowSum (e.X) <+ e.P 1>>>; |
|||
e.X = <PowSum (e.X) 1>; |
|||
}; |
|||
Disarium { |
|||
e.N, <PowSum <Digits e.N>>: e.N = True; |
|||
e.N = False; |
|||
}; |
|||
FindDisarium { |
|||
0 s.N = ; |
|||
s.I s.N, <Disarium s.N>: { |
|||
True = <Prout s.N> <FindDisarium <- s.I 1> <+ s.N 1>>; |
|||
False = <FindDisarium s.I <+ s.N 1>>; |
|||
}; |
|||
};</syntaxhighlight> |
|||
{{out}} |
|||
<pre>0 |
|||
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
89 |
|||
135 |
|||
175 |
|||
518 |
|||
598 |
|||
1306 |
|||
1676 |
|||
2427 |
|||
2646798</pre> |
|||
=={{header|RPL}}== |
=={{header|RPL}}== |
||
≪ DUP →STR → digits |
≪ DUP →STR → digits |