Logtalk 2.20.0 files.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1114 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
pmoura
2004-08-16 16:41:11 +00:00
parent 1781ff9420
commit f5e660b9a3
156 changed files with 1886 additions and 438 deletions

View File

@@ -1,6 +1,6 @@
=================================================================
Logtalk - Object oriented extension to Prolog
Release 2.19.1
Release 2.20.0
Copyright (c) 1998-2004 Paulo Moura. All Rights Reserved.
=================================================================

View File

@@ -1,6 +1,6 @@
=================================================================
Logtalk - Object oriented extension to Prolog
Release 2.19.1
Release 2.20.0
Copyright (c) 1998-2004 Paulo Moura. All Rights Reserved.
=================================================================

View File

@@ -3,9 +3,16 @@
instantiates(heuristic_state_space)).
:- uses(list).
:- uses(numberlist).
:- uses(set).
:- info([
version is 1.1,
author is 'Paulo Moura',
date is 2004/8/15,
comment is 'Bridge puzzle.']).
:- uses(list, [append/3]).
:- uses(numberlist, [min/2, max/2]).
:- uses(set, [insert/3, insert_all/3, select/3]).
initial_state(start, ([], right, [1,3,6,8,12])).
@@ -15,32 +22,32 @@
next_state((Left1, left, Right1), (Left2, right, Right2), Slower) :- % two persons
list::append(List, [Person1| Persons], Left1),
set::select(Person2, Persons, Others),
list::append(List, Others, Left2),
set::insert_all([Person1, Person2], Right1, Right2),
append(List, [Person1| Persons], Left1),
select(Person2, Persons, Others),
append(List, Others, Left2),
insert_all([Person1, Person2], Right1, Right2),
(Person1 > Person2 ->
Slower = Person1
;
Slower = Person2).
next_state((Left1, right, Right1), (Left2, left, Right2), Slower) :- % two persons
list::append(List, [Person1| Persons], Right1),
set::select(Person2, Persons, Others),
list::append(List, Others, Right2),
set::insert_all([Person1, Person2], Left1, Left2),
append(List, [Person1| Persons], Right1),
select(Person2, Persons, Others),
append(List, Others, Right2),
insert_all([Person1, Person2], Left1, Left2),
(Person1 > Person2 ->
Slower = Person1
;
Slower = Person2).
next_state((Left1, left, Right1), (Left2, right, Right2), Person) :- % one person
set::select(Person, Left1, Left2),
set::insert(Right1, Person, Right2).
select(Person, Left1, Left2),
insert(Right1, Person, Right2).
next_state((Left1, right, Right1), (Left2, left, Right2), Person) :- % one person
set::select(Person, Right1, Right2),
set::insert(Left1, Person, Left2).
select(Person, Right1, Right2),
insert(Left1, Person, Left2).
heuristic((Left, Lamp, Right), Heuristic) :-

View File

@@ -4,13 +4,13 @@
:- info([
version is 1.0,
version is 1.1,
author is 'Paulo Moura',
date is 1998/3/23,
date is 2004/8/15,
comment is 'Eight puzzle heuristic state space search problem.']).
:- uses(list).
:- uses(list, [member/2]).
initial_state(four_steps, [2/2,1/3,3/2,2/3,3/3,3/1,2/1,1/1,1/2]).
@@ -24,10 +24,10 @@
print_state([S0,S1,S2,S3,S4,S5,S6,S7,S8]) :-
list::member(Y, [3, 2, 1]),
member(Y, [3, 2, 1]),
nl,
list::member(X, [1, 2, 3]),
list::member(Tile-X/Y, [' '-S0,1-S1,2-S2,3-S3,4-S4,5-S5,6-S6,7-S7,8-S8]),
member(X, [1, 2, 3]),
member(Tile-X/Y, [' '-S0,1-S1,2-S2,3-S3,4-S4,5-S5,6-S6,7-S7,8-S8]),
write(Tile),
fail.

View File

@@ -4,21 +4,22 @@
:- info([
version is 1.0,
version is 1.1,
author is 'Paulo Moura',
date is 1998/3/23,
date is 2004/8/15,
comment is 'Hill climbing heuristic state space search strategy.',
parnames is ['Threshold']]).
:- uses(list).
:- uses(list,
[member/2, reverse/2, sort/2]).
:- private(hill/7).
search(Space, State, Threshold, Solution, Cost) :-
hill(Space, State, Threshold, [], Path, 0, Cost),
list::reverse(Path, Solution).
reverse(Path, Solution).
hill(Space, State, _, Path, [State| Path], Cost, Cost) :-
@@ -28,12 +29,12 @@
findall(
(Estimate, Cost, Next),
(Space::next_state(State, Next, Cost),
\+ list::member(Next, [State| Path]),
\+ member(Next, [State| Path]),
Space::heuristic(Next, Guess),
Estimate is Guess + Cost),
States),
list::sort(States, SortedStates),
list::member((_, Cost2, Next2), SortedStates),
sort(States, SortedStates),
member((_, Cost2, Next2), SortedStates),
SoFar2 is SoFar + Cost2,
SoFar2 =< Threshold,
hill(Space, Next2, Threshold, [State| Path], Solution, SoFar2, Total).

View File

@@ -10,7 +10,7 @@
comment is 'Missionaries and cannibals heuristic state space search problem.']).
:- uses(loop).
:- uses(loop, [forto/3]).
initial_state(start, ((3,3), left, (0,0))).
@@ -20,14 +20,14 @@
print_state(((Me,Ce), B, (Md,Cd))) :-
loop::forto(1, Me, write('M')),
loop::forto(1, Ce, write('C')),
forto(1, Me, write('M')),
forto(1, Ce, write('C')),
(B = left ->
write('.<__>..........')
;
write('..........<__>.')),
loop::forto(1, Md, write('M')),
loop::forto(1, Cd, write('C')),
forto(1, Md, write('M')),
forto(1, Cd, write('C')),
nl.

View File

@@ -4,18 +4,18 @@
:- info([
version is 1.0,
version is 1.1,
author is 'Paulo Moura',
date is 1998/3/23,
date is 2004/8/15,
comment is 'Performance monitor for state space searches.']).
:- uses(event_registry).
:- uses(before_event_registry).
:- uses(after_event_registry).
:- uses(list).
:- uses(numberlist).
:- uses(time).
:- uses(list, [length/2]).
:- uses(numberlist, [min/2, max/2, sum/2]).
:- uses(time, [cpu_time/1]).
:- private(transitions/3).
@@ -71,7 +71,7 @@
transitions(Number) :-
findall(N, ::transitions(_, _, N), List),
numberlist::sum(List, Number).
sum(List, Number).
time(Time) :-
@@ -85,12 +85,12 @@
Length,
(::transitions(State1, _, _),
findall(State2, ::transitions(State1, State2, _), States2),
list::length(States2, Length)),
length(States2, Length)),
Lengths),
list::min(Lengths, Minimum),
list::max(Lengths, Maximum),
numberlist::sum(Lengths, Sum),
list::length(Lengths, Length),
min(Lengths, Minimum),
max(Lengths, Maximum),
sum(Lengths, Sum),
length(Lengths, Length),
Average is Sum / Length.
@@ -114,13 +114,13 @@
before(_, solve(_, _, _), _) :-
!,
time::cpu_time(Time),
cpu_time(Time),
::retractall(start_time(_)),
::asserta(start_time(Time)).
before(_, solve(_, _, _, _), _) :-
!,
time::cpu_time(Time),
cpu_time(Time),
::retractall(start_time(_)),
::asserta(start_time(Time)).
@@ -145,19 +145,19 @@
after(_, solve(_, _, Solution), _) :-
!,
time::cpu_time(Time),
cpu_time(Time),
::retractall(end_time(_)),
::asserta(end_time(Time)),
list::length(Solution, Length),
length(Solution, Length),
::retractall(solution_length(_)),
::asserta(solution_length(Length)).
after(_, solve(_, _, Solution, _), _) :-
!,
time::cpu_time(Time),
cpu_time(Time),
::retractall(end_time(_)),
::asserta(end_time(Time)),
list::length(Solution, Length),
length(Solution, Length),
::retractall(solution_length(_)),
::asserta(solution_length(Length)).