Generalizing Fibonacci sequeue with SICStus Prolog

Posted by Christophe Herreman on Stack Overflow See other posts from Stack Overflow or by Christophe Herreman
Published on 2010-05-09T18:34:36Z Indexed on 2010/05/09 18:38 UTC
Read the original article Hit count: 401

I'm trying to find a solution for a query on a generalized Fibonacci sequence (GFS). The query is: are there any GFS that have 885 as their 12th number? The initial 2 numbers may be restricted between 1 and 10.

I already found the solution to find the Nth number in a sequence that starts at (1, 1) in which I explicitly define the initial numbers. Here is what I have for this:

fib(1, 1).
fib(2, 1).
fib(N, X) :-
    N #> 1,
    Nmin1 #= N - 1,
    Nmin2 #= N - 2,
    fib(Nmin1, Xmin1),
    fib(Nmin2, Xmin2),
    X #= Xmin1 + Xmin2.

For the query mentioned I thought the following would do the trick, in which I reuse the fib method without defining the initial numbers explicitly since this now needs to be done dynamically:

fib2 :-
    X1 in 1..10,
    X2 in 1..10,
    fib(1, X1),
    fib(2, X2),
    fib(12, 885).

... but this does not seem to work.

Is it not possible this way to define the initial numbers, or am I doing something terribly wrong? I'm not asking for the solution, but any advice that could help me solve this would be greatly appreciated.

© Stack Overflow or respective owner

Related posts about prolog

Related posts about sicstus-prolog