Data update

This commit is contained in:
Ingy dot Net 2024-04-19 16:56:29 -07:00
parent 0df55f9f24
commit aec8ed51b6
1045 changed files with 18889 additions and 2777 deletions

View file

@ -0,0 +1,27 @@
proc munchausen(word n) bool:
/* d^d for d>6 does not fit in a 16-bit word,
* it follows that any 16-bit integer containing
* a digit d>6 is not a Munchausen number */
[7]word dpow = (1, 1, 4, 27, 256, 3125, 46656);
word m, d, sum;
m := n;
sum := 0;
while
d := m % 10;
m>0 and d<=6
do
m := m/10;
sum := sum + dpow[d]
od;
d<=6 and sum=n
corp;
proc main() void:
word n;
for n from 1 upto 5000 do
if munchausen(n) then
writeln(n)
fi
od
corp

View file

@ -1,5 +1,5 @@
# sum power of digits
val .spod = f(.n) fold f{+}, map(f .x^.x, s2n toString .n)
val .spod = fn(.n) fold fn{+}, map(fn(.x) .x^.x, s2n string .n)
# Munchausen
writeln "Answers: ", filter f(.n) .n == .spod(.n), series 0..5000
writeln "Answers: ", filter fn(.n) .n == .spod(.n), series 0..5000

View file

@ -0,0 +1,15 @@
program munchausen_numbers;
loop for n in [1..5000] | munchausen n do
print(n);
end loop;
op munchausen(n);
m := n;
loop while m>0 do
d := m mod 10;
m div:= 10;
sum +:= d ** d;
end loop;
return sum = n;
end op;
end program;