From 1c86bdd6b2f717bb722983377d144a9b2863fc68 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Wed, 7 Nov 2012 10:42:03 +0100 Subject: prisoners_dilemma: Track module state Will be needed for peridical algorithms. --- prisoners_dilemma.pl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'prisoners_dilemma.pl') 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. -- cgit