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