home *** CD-ROM | disk | FTP | other *** search
- "MINIMAX-Algorithmus"
-
- MINIMAX(S-tand, b-ester-Zug, W-ert) ->
- not(Endknoten(S-tand))
- Liste-moeglicher-Zuege(S-tand, L-iste)
- bester-Zug(L-iste, b-ester-Zug, W-ert);
- MINIMAX(S-tand, b-Z, W-ert) ->
- Endknoten(S-tand)
- statische-Bewertung(S-tand, W-ert);
-
- Liste-moeglicher-Zuege(S-tand,L-iste) ->
- set-of(S-tand', zulaessiger-Zug(S-tand, S-tand'), L-iste);
-
- bester-Zug(S.nil, S, W-ert) -> / MINIMAX(S, b, W-ert);
- bester-Zug(S.R-est, b-Z, W-ert) ->
- MINIMAX(S, b-Z', W-ert')
- bester-Zug(R-est, b-Z'',W-ert'')
- der-Bessere(S, W-ert', b-Z'', W-ert'', b-Z, W-ert);
-
- der-Bessere(b-Z', W-ert', b-Z'', W-ert'', b-Z', W-ert') ->
- MAX-Ebene(b-Z') val(inf(W-ert', W-ert''),1) /;
- der-Bessere(b-Z', W-ert', b-Z'', W-ert'', b-Z', W-ert') ->
- MIN-Ebene(b-Z') val(inf(W-ert'', W-ert'),1) /;
- der-Bessere(b-Z', W-ert', b-Z'', W-ert'', b-Z'', W-ert'') -> ;
-
-
- "Spielregeln fuer das Streichholzspiel (Version 2)"
-
- zulaessiger-Zug(<S-uchtiefe, F-arbe-am-Zug, H-oelzchenzahl>,
- <S-uchtiefe', F-arbe-am-Zug', H-oelzchenzahl' >) ->
- Anzahl(n)
- val(inf(H-oelzchenzahl,n),0)
- val(sub(H-oelzchenzahl,n), H-oelzchenzahl')
- val(add(S-uchtiefe,1), S-uchtiefe')
- Gegner(F-arbe-am-Zug, F-arbe-am-Zug');
-
- Gegner(WEISS,SCHWARZ) ->;
- Gegner(SCHWARZ,WEISS) ->;
-
- Anzahl(n) -> enum(n,3);
-
- "MINIMAX-Definitionen (Version 1)"
-
- MAX-Ebene(<S-uchtiefe, WEISS, A>) ->;
- MIN-Ebene(<S-uchtiefe, SCHWARZ, A>) ->;
-
- Endknoten(<S-uchtiefe, F-arbe-am-Zug, 0>) -> /;
- Endknoten(<4, F-arbe-am-Zug, H-oelzchenzahl>) ->;
-
- statische-Bewertung(<S-uchtiefe, F-arbe-am-Zug, 0>, 1) ->
- MAX-Ebene(<S-uchtiefe, F-arbe-am-Zug, 0>) /;
- statische-Bewertung(<S-uchtiefe, F-arbe-am-Zug, 0>, 0) ->
- MIN-Ebene(<S-uchtiefe, F-arbe-am-Zug, 0>) /;
- statische-Bewertung(<S-uchtiefe, SCHWARZ, H-oelzchenzahl >, 1) ->
- val(mod( H-oelzchenzahl,4),1) /;
- statische-Bewertung(<S-uchtiefe, SCHWARZ, H-oelzchenzahl >, 0) ->;
- statische-Bewertung(<S-uchtiefe, WEISS, H-oelzchenzahl>, 0) ->
- val(mod( H-oelzchenzahl,4),1) /;
- statische-Bewertung(<S-uchtiefe, WEISS, H-oelzchenzahl>, 1) ->;
-
-
- "Hilfspraedikate"
-
- not(p) -> p / fail;
- not(p) ->;
-
- set-of(x,p,l) ->
- output-is(o) input-is(i)
- new-buffer(set-of'(x,p,l))
- output(o) input(i);
-
- set-of'(x,p,l) -> output("buffer") input("buffer") outml("nil;") fail;
- set-of'(x,p,l) -> p in(l') in-char(";") erweitere(l',x) fail;
- set-of'(x,p,l) -> in(l);
-
- erweitere(x.l,x) -> / erweitere(l);
- erweitere(y.l,x) -> out(y) outm(".") erweitere(l,x);
- erweitere(nil,x) -> out(x) outml(".nil;");