42aabce1bb
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1973 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
113 lines
4.9 KiB
Plaintext
113 lines
4.9 KiB
Plaintext
================================================================
|
|
Logtalk - Open source object-oriented logic programming language
|
|
Release 2.30.7
|
|
|
|
Copyright (c) 1998-2007 Paulo Moura. All Rights Reserved.
|
|
================================================================
|
|
|
|
|
|
% start by loading the example and the required library files:
|
|
|
|
| ?- logtalk_load(philosophers(loader)).
|
|
...
|
|
|
|
|
|
% five meals for each philosopher, each one spending a maximum of five seconds of continuous thinking or eating:
|
|
|
|
| ?- threaded_ignore(p1::run(5, 5)), threaded_ignore(p2::run(5, 5)), threaded_ignore(p3::run(5, 5)), threaded_ignore(p4::run(5, 5)), threaded_ignore(p5::run(5, 5)).
|
|
|
|
Yes
|
|
Philosopher p3 thinking for 1 seconds.
|
|
Philosopher p1 thinking for 2 seconds.
|
|
Philosopher p2 thinking for 3 seconds.
|
|
Philosopher p4 thinking for 4 seconds.
|
|
Philosopher p5 thinking for 3 seconds.
|
|
Philosopher p3 eating for 2 seconds with chopsticks cs3 and cs2.
|
|
Philosopher p1 eating for 3 seconds with chopsticks cs5 and cs1.
|
|
Philosopher p2 thinking for 3 seconds.
|
|
Philosopher p3 thinking for 2 seconds.
|
|
Philosopher p5 thinking for 1 seconds.
|
|
Philosopher p4 eating for 1 seconds with chopsticks cs4 and cs3.
|
|
Philosopher p5 thinking for 1 seconds.
|
|
Philosopher p1 thinking for 3 seconds.
|
|
Philosopher p4 thinking for 1 seconds.
|
|
Philosopher p3 eating for 2 seconds with chopsticks cs3 and cs2.
|
|
Philosopher p5 eating for 2 seconds with chopsticks cs5 and cs4.
|
|
Philosopher p2 thinking for 3 seconds.
|
|
Philosopher p4 thinking for 2 seconds.
|
|
Philosopher p3 thinking for 2 seconds.
|
|
Philosopher p5 thinking for 1 seconds.
|
|
Philosopher p1 eating for 3 seconds with chopsticks cs5 and cs1.
|
|
Philosopher p4 eating for 4 seconds with chopsticks cs4 and cs3.
|
|
Philosopher p5 thinking for 1 seconds.
|
|
Philosopher p2 thinking for 1 seconds.
|
|
Philosopher p3 thinking for 4 seconds.
|
|
Philosopher p5 thinking for 2 seconds.
|
|
Philosopher p2 thinking for 4 seconds.
|
|
Philosopher p1 thinking for 1 seconds.
|
|
Philosopher p5 thinking for 1 seconds.
|
|
Philosopher p4 thinking for 4 seconds.
|
|
Philosopher p1 eating for 1 seconds with chopsticks cs5 and cs1.
|
|
Philosopher p5 thinking for 3 seconds.
|
|
Philosopher p3 eating for 2 seconds with chopsticks cs3 and cs2.
|
|
Philosopher p1 thinking for 3 seconds.
|
|
Philosopher p2 thinking for 4 seconds.
|
|
Philosopher p3 thinking for 3 seconds.
|
|
Philosopher p5 eating for 4 seconds with chopsticks cs5 and cs4.
|
|
Philosopher p4 thinking for 3 seconds.
|
|
Philosopher p1 thinking for 4 seconds.
|
|
Philosopher p2 eating for 1 seconds with chopsticks cs1 and cs2.
|
|
Philosopher p3 thinking for 3 seconds.
|
|
Philosopher p4 thinking for 3 seconds.
|
|
Philosopher p2 thinking for 1 seconds.
|
|
Philosopher p5 thinking for 2 seconds.
|
|
Philosopher p2 eating for 3 seconds with chopsticks cs1 and cs2.
|
|
Philosopher p1 thinking for 4 seconds.
|
|
Philosopher p3 thinking for 3 seconds.
|
|
Philosopher p5 eating for 2 seconds with chopsticks cs5 and cs4.
|
|
Philosopher p4 thinking for 1 seconds.
|
|
Philosopher p4 thinking for 4 seconds.
|
|
Philosopher p2 thinking for 1 seconds.
|
|
Philosopher p5 thinking for 4 seconds.
|
|
Philosopher p1 eating for 4 seconds with chopsticks cs5 and cs1.
|
|
Philosopher p2 thinking for 2 seconds.
|
|
Philosopher p3 eating for 2 seconds with chopsticks cs3 and cs2.
|
|
Philosopher p2 thinking for 3 seconds.
|
|
Philosopher p3 thinking for 1 seconds.
|
|
Philosopher p4 eating for 1 seconds with chopsticks cs4 and cs3.
|
|
Philosopher p5 thinking for 1 seconds.
|
|
Philosopher p3 thinking for 4 seconds.
|
|
Philosopher p4 thinking for 4 seconds.
|
|
Philosopher p1 thinking for 2 seconds.
|
|
Philosopher p5 eating for 2 seconds with chopsticks cs5 and cs4.
|
|
Philosopher p2 eating for 2 seconds with chopsticks cs1 and cs2.
|
|
Philosopher p1 thinking for 3 seconds.
|
|
Philosopher p5 thinking for 4 seconds.
|
|
Philosopher p2 thinking for 2 seconds.
|
|
Philosopher p3 eating for 4 seconds with chopsticks cs3 and cs2.
|
|
Philosopher p4 thinking for 2 seconds.
|
|
Philosopher p1 eating for 3 seconds with chopsticks cs5 and cs1.
|
|
Philosopher p2 thinking for 1 seconds.
|
|
Philosopher p4 thinking for 3 seconds.
|
|
Philosopher p2 thinking for 1 seconds.
|
|
Philosopher p5 thinking for 3 seconds.
|
|
p3 terminated.
|
|
Philosopher p2 thinking for 3 seconds.
|
|
p1 terminated.
|
|
Philosopher p4 eating for 3 seconds with chopsticks cs4 and cs3.
|
|
Philosopher p5 thinking for 4 seconds.
|
|
Philosopher p2 eating for 4 seconds with chopsticks cs1 and cs2.
|
|
Philosopher p4 thinking for 4 seconds.
|
|
Philosopher p5 eating for 1 seconds with chopsticks cs5 and cs4.
|
|
Philosopher p2 thinking for 1 seconds.
|
|
p5 terminated.
|
|
Philosopher p2 eating for 4 seconds with chopsticks cs1 and cs2.
|
|
Philosopher p4 eating for 3 seconds with chopsticks cs4 and cs3.
|
|
p4 terminated.
|
|
p2 terminated.
|
|
|
|
|
|
% same problem as above but using a parametric object for representing the philosophers:
|
|
|
|
| ?- threaded_ignore(philosopher(p1,cs1,cs2)::run(5, 5)), threaded_ignore(philosopher(p2,cs2,cs3)::run(5, 5)), threaded_ignore(philosopher(p3,cs3,cs4)::run(5, 5)), threaded_ignore(philosopher(p4,cs4,cs5)::run(5, 5)), threaded_ignore(philosopher(p5,cs1,cs5)::run(5, 5)).
|