Munchausen numbers: Difference between revisions
Content added Content deleted
(Added solution for Action!) |
|||
Line 182: | Line 182: | ||
<pre>3435 |
<pre>3435 |
||
0001</pre> |
0001</pre> |
||
=={{header|Action!}}== |
|||
<lang Action!>;there are considered digits 0-5 because 6^6>5000 |
|||
DEFINE MAXDIGIT="5" |
|||
INT ARRAY powers(MAXDIGIT+1) |
|||
INT FUNC Power(BYTE x) |
|||
INT res |
|||
BYTE i |
|||
IF x=0 THEN RETURN (0) FI |
|||
res=1 |
|||
FOR i=0 TO x-1 |
|||
DO |
|||
res==*x |
|||
OD |
|||
RETURN (res) |
|||
BYTE FUNC IsMunchausen(INT x) |
|||
INT sum,tmp |
|||
BYTE d |
|||
tmp=x sum=0 |
|||
WHILE tmp#0 |
|||
DO |
|||
d=tmp MOD 10 |
|||
IF d>MAXDIGIT THEN |
|||
RETURN (0) |
|||
FI |
|||
sum==+powers(d) |
|||
tmp==/10 |
|||
OD |
|||
IF sum=x THEN |
|||
RETURN (1) |
|||
FI |
|||
RETURN (0) |
|||
PROC Main() |
|||
INT i |
|||
FOR i=0 TO MAXDIGIT |
|||
DO |
|||
powers(i)=Power(i) |
|||
OD |
|||
FOR i=1 TO 5000 |
|||
DO |
|||
IF IsMunchausen(i) THEN |
|||
PrintIE(i) |
|||
FI |
|||
OD |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Munchausen_numbers.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
1 |
|||
3435 |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |