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}}==