RosettaCodeData/Task/Disarium-numbers/BCPL/disarium-numbers.bcpl
2023-07-01 13:44:08 -04:00

17 lines
376 B
Text

get "libhdr"
let length(n) = n < 10 -> 1,
length(n/10) + 1
let pow(b, e) = e = 0 -> 1,
b * pow(b, e-1)
let dps(n) = dpsl(n, length(n))
and dpsl(n, p) = n = 0 -> 0,
pow(n rem 10, p) + dpsl(n/10, p-1)
let disarium(n) = dps(n) = n
let start() be
for n=0 to 2500 if disarium(n)
do writef("%N*N", n)