Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
55
Task/Fusc-sequence/Prolog/fusc-sequence.pro
Normal file
55
Task/Fusc-sequence/Prolog/fusc-sequence.pro
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
:- dynamic fusc_cache/2.
|
||||
|
||||
fusc(0, 0):-!.
|
||||
fusc(1, 1):-!.
|
||||
fusc(N, F):-
|
||||
fusc_cache(N, F),
|
||||
!.
|
||||
fusc(N, F):-
|
||||
0 is N mod 2,
|
||||
!,
|
||||
M is N//2,
|
||||
fusc(M, F),
|
||||
assertz(fusc_cache(N, F)).
|
||||
fusc(N, F):-
|
||||
N1 is (N - 1)//2,
|
||||
N2 is (N + 1)//2,
|
||||
fusc(N1, F1),
|
||||
fusc(N2, F2),
|
||||
F is F1 + F2,
|
||||
assertz(fusc_cache(N, F)).
|
||||
|
||||
print_fusc_sequence(N):-
|
||||
writef('First %w fusc numbers:\n', [N]),
|
||||
print_fusc_sequence(N, 0),
|
||||
nl.
|
||||
|
||||
print_fusc_sequence(N, M):-
|
||||
M >= N,
|
||||
!.
|
||||
print_fusc_sequence(N, M):-
|
||||
fusc(M, F),
|
||||
writef('%w ', [F]),
|
||||
M1 is M + 1,
|
||||
print_fusc_sequence(N, M1).
|
||||
|
||||
print_max_fusc(N):-
|
||||
writef('Fusc numbers up to %w that are longer than any previous one:\n', [N]),
|
||||
print_max_fusc(N, 0, 0).
|
||||
|
||||
print_max_fusc(N, M, _):-
|
||||
M >= N,
|
||||
!.
|
||||
print_max_fusc(N, M, Max):-
|
||||
fusc(M, F),
|
||||
(F >= Max ->
|
||||
writef('n = %w, fusc(n) = %w\n', [M, F]), Max1 = max(10, Max * 10)
|
||||
;
|
||||
Max1 = Max
|
||||
),
|
||||
M1 is M + 1,
|
||||
print_max_fusc(N, M1, Max1).
|
||||
|
||||
main:-
|
||||
print_fusc_sequence(61),
|
||||
print_max_fusc(1000000).
|
||||
Loading…
Add table
Add a link
Reference in a new issue