diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2012-11-07 10:42:03 +0100 |
---|---|---|
committer | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2012-11-07 10:42:03 +0100 |
commit | 1c86bdd6b2f717bb722983377d144a9b2863fc68 (patch) | |
tree | f003aa6ea51edeb0147ba0f2aa97df67f210148f /prisoners_dilemma.pl | |
parent | 087a091275763a651613e9f168ff8bc19c31f6cb (diff) | |
download | wbs-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.pl | 14 |
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. |