• GO CITY1 CITY2 .... with BACKTRACKING!

    From Graham Cooper@grahamcooper7@gmail.com to comp.lang.prolog on Tue May 9 04:46:01 2023
    From Newsgroup: comp.lang.prolog

    it tries all the odd combinations until it arrives at

    1 -- 2-- 4 -- 6

    go FROM TO*
    rd 1 3
    rd 2 4
    rd 3 5
    rd 4 6
    rd 5 7
    rd 1 2



    ------ 1 0/0 -----
    query :- go 1 6
    ------------
    ---------- BEGIN 1 ---------
    go 1 6
    FROM = 1
    TO = 6

    ------ 2 0/0 -----
    go FROM TO :- rd FROM TO
    ------------
    ---------- BEGIN 2 ---------
    rd FROM TO
    FROM = 1
    TO = 6
    NOT FOUND

    ****** 2 ******
    FROM = 1 TO = 6
    ****************

    PROGRAM 2

    ------ 3 1/1 -----
    go FROM TO :- rd FROM MID go MID TO
    ------------
    ---------- BEGIN 3 ---------
    rd FROM MID
    FROM = 1
    MID = 3
    ---------- BEGIN 4 ---------
    go MID TO
    MID = 3
    TO = 6
    FROM = 3
    TO = 6

    ------ 5 0/0 -----
    go FROM TO :- rd FROM TO
    ------------
    ---------- BEGIN 5 ---------
    rd FROM TO
    FROM = 3
    TO = 6
    NOT FOUND

    ****** 5 ******
    FROM = 3 TO = 6
    ****************

    PROGRAM 2

    ------ 6 1/1 -----
    go FROM TO :- rd FROM MID go MID TO
    ------------
    ---------- BEGIN 6 ---------
    rd FROM MID
    FROM = 3
    MID = 5
    ---------- BEGIN 7 ---------
    go MID TO
    MID = 5
    TO = 6
    FROM = 5
    TO = 6

    ------ 8 0/0 -----
    go FROM TO :- rd FROM TO
    ------------
    ---------- BEGIN 8 ---------
    rd FROM TO
    FROM = 5
    TO = 6
    NOT FOUND

    ****** 8 ******
    FROM = 5 TO = 6
    ****************

    PROGRAM 2

    ------ 9 1/1 -----
    go FROM TO :- rd FROM MID go MID TO
    ------------
    ---------- BEGIN 9 ---------
    rd FROM MID
    FROM = 5
    MID = 7
    ---------- BEGIN 10 ---------
    go MID TO
    MID = 7
    TO = 6
    FROM = 7
    TO = 6

    ------ 11 0/0 -----
    go FROM TO :- rd FROM TO
    ------------
    ---------- BEGIN 11 ---------
    rd FROM TO
    FROM = 7
    TO = 6
    NOT FOUND

    ****** 11 ******
    FROM = 7 TO = 6
    ****************

    PROGRAM 2

    ------ 12 1/1 -----
    go FROM TO :- rd FROM MID go MID TO
    ------------
    ---------- BEGIN 12 ---------
    rd FROM MID
    FROM = 7
    NOT FOUND

    ****** 12 ******
    FROM = 7 TO = 6
    ****************
    NOT FOUND
    BACKTRACK

    NOT FOUND

    ****** 9 ******
    FROM = 5 TO = 6 MID = 7
    ****************
    NOT FOUND
    BACKTRACK

    NOT FOUND

    ****** 6 ******
    FROM = 3 TO = 6 MID = 5
    ****************
    NOT FOUND
    BACKTRACK

    MID = 2
    ---------- BEGIN 16 ---------
    go MID TO
    MID = 2
    TO = 6
    FROM = 2
    TO = 6

    ------ 17 0/0 -----
    go FROM TO :- rd FROM TO
    ------------
    ---------- BEGIN 17 ---------
    rd FROM TO
    FROM = 2
    TO = 6
    NOT FOUND

    ****** 17 ******
    FROM = 2 TO = 6
    ****************

    PROGRAM 2

    ------ 18 1/1 -----
    go FROM TO :- rd FROM MID go MID TO
    ------------
    ---------- BEGIN 18 ---------
    rd FROM MID
    FROM = 2
    MID = 4
    ---------- BEGIN 19 ---------
    go MID TO
    MID = 4
    TO = 6
    FROM = 4
    TO = 6

    ------ 20 0/0 -----
    go FROM TO :- rd FROM TO
    ------------
    ---------- BEGIN 20 ---------
    rd FROM TO
    FROM = 4
    TO = 6

    ****** 20 ******
    FROM = 4 TO = 6
    ****************

    ****** 18 ******
    FROM = 2 TO = 6 MID = 4
    ****************

    ****** 3 ******
    FROM = 1 TO = 6 MID = 3
    ****************


    YES
    --- Synchronet 3.20a-Linux NewsLink 1.114