30 lines
751 B
Plaintext
30 lines
751 B
Plaintext
main =>
|
|
println("First 61 fusc numbers:"),
|
|
println([fusc(I) : I in 0..60]),
|
|
nl,
|
|
println("Points in the sequence whose length is greater than any previous fusc number length:\n"),
|
|
println(" Index fusc Len"),
|
|
largest_fusc_string(20_000_000).
|
|
|
|
table
|
|
fusc(0) = 0.
|
|
fusc(1) = 1.
|
|
fusc(N) = fusc(N//2), even(N) => true.
|
|
fusc(N) = fusc((N-1)//2) + fusc((N+1)//2) => true.
|
|
|
|
largest_fusc_string(Limit) =>
|
|
largest_fusc_string(0,Limit,0).
|
|
|
|
largest_fusc_string(Limit,Limit,_).
|
|
largest_fusc_string(N,Limit,LargestLen) :-
|
|
N <= Limit,
|
|
F = fusc(N),
|
|
Len = F.to_string.len,
|
|
(Len > LargestLen ->
|
|
printf("%8d %8d %4d\n",N,F,Len),
|
|
LargestLen1 = Len
|
|
;
|
|
LargestLen1 = LargestLen
|
|
),
|
|
largest_fusc_string(N+1,Limit,LargestLen1).
|