summaryrefslogtreecommitdiff
path: root/prisoners_dilemma.pl
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2012-11-07 10:42:03 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2012-11-07 10:42:03 +0100
commit1c86bdd6b2f717bb722983377d144a9b2863fc68 (patch)
treef003aa6ea51edeb0147ba0f2aa97df67f210148f /prisoners_dilemma.pl
parent087a091275763a651613e9f168ff8bc19c31f6cb (diff)
downloadwbs-1c86bdd6b2f717bb722983377d144a9b2863fc68.tar.gz
wbs-1c86bdd6b2f717bb722983377d144a9b2863fc68.tar.bz2
wbs-1c86bdd6b2f717bb722983377d144a9b2863fc68.zip
prisoners_dilemma: Track module state
Will be needed for peridical algorithms.
Diffstat (limited to 'prisoners_dilemma.pl')
-rw-r--r--prisoners_dilemma.pl14
1 files changed, 7 insertions, 7 deletions
diff --git a/prisoners_dilemma.pl b/prisoners_dilemma.pl
index ffcbfad..b690fbe 100644
--- a/prisoners_dilemma.pl
+++ b/prisoners_dilemma.pl
@@ -24,14 +24,14 @@ pay(d,c,4).
pay2(A, B, PayA, PayB) :- pay(A, B, PayA), pay(B, A, PayB).
-decide(Module, Hist, Decision) :- call(Module, Hist, Decision).
+decide(Module, Hist, Decision, State, NewState) :- call(Module, Hist, Decision, State, NewState).
sum([], 0).
sum([H|T], S) :- sum(T, TMP), S is TMP + H.
do(e, _, _, _, _) :- !.
-do(Choice, Module, Hist, PayedA, PayedB) :-
- decide(Module, Hist, ModuleDecision),
+do(Choice, Module, ModuleState, Hist, PayedA, PayedB) :-
+ decide(Module, Hist, ModuleDecision, ModuleState, NewModuleState),
pay2(Choice, ModuleDecision, PayA, PayB),
write('A Pay: '), write(Choice), write(': '), write(PayA), write('\t'),
@@ -39,12 +39,12 @@ do(Choice, Module, Hist, PayedA, PayedB) :-
write('A: '), sum([PayA|PayedA], SumA), write(SumA), write('\t'),
write('B: '), sum([PayB|PayedB], SumB), write(SumB), nl,
- loop(Module, [Choice|Hist], [PayA|PayedA], [PayB|PayedB]).
+ loop(Module, NewModuleState, [Choice|Hist], [PayA|PayedA], [PayB|PayedB]).
-loop(Module, Hist, PayedA, PayedB) :-
+loop(Module, ModuleState, Hist, PayedA, PayedB) :-
write('Type c,d or e to end: '), read(Choice),
- do(Choice, Module, Hist, PayedA, PayedB).
+ do(Choice, Module, ModuleState, Hist, PayedA, PayedB).
-start(Module) :- consult(Module), loop(Module, [], [], []).
+start(Module) :- consult(Module), loop(Module, [], [], [], []).
start :- start(tit4tat),halt.