Declaratieve Talen/Oplossing celautomaat: verschil tussen versies
Naar navigatie springen
Naar zoeken springen
New page: regels([S1,S2],Regels):- regelsseq(S1,Regels,S2). regels([S1,S2|Sequenties],Regels):- regels([S2|Sequenties],R1), regelsseq(S1,R2,S2), merge(R1,R2,R3), remove_doubles(R3,Regels), ge... |
Geen bewerkingssamenvatting |
||
Regel 1: | Regel 1: | ||
regels([S1,S2],Regels):- | |||
regels([S1,S2],Regels):- | |||
regelsseq(S1,Regels,S2). | regelsseq(S1,Regels,S2). | ||
regels([S1,S2|Sequenties],Regels):- | regels([S1,S2|Sequenties],Regels):- | ||
regels([S2|Sequenties],R1), | regels([S2|Sequenties],R1), | ||
regelsseq(S1,R2,S2), | regelsseq(S1,R2,S2), | ||
Regel 9: | Regel 8: | ||
geldig(Regels). | geldig(Regels). | ||
regelsseq(S1,Regels,S2):- | regelsseq(S1,Regels,S2):- | ||
regelsseq2([o,o|S1],Regels,S2). | regelsseq2([o,o|S1],Regels,S2). | ||
regelsseq2([o,o],[[o,o,o,V]],[V,V]). | regelsseq2([o,o],[[o,o,o,V]],[V,V]). | ||
regelsseq2([o,x],[[o,x,o,V1],[x,o,o,V2]],[V1,V2]). | regelsseq2([o,x],[[o,x,o,V1],[x,o,o,V2]],[V1,V2]). | ||
regelsseq2([x,o],[[x,o,o,V1],[o,o,o,V2]],[V1,V2]). | regelsseq2([x,o],[[x,o,o,V1],[o,o,o,V2]],[V1,V2]). | ||
regelsseq2([x,x],[[x,x,o,V1],[x,o,o,V2]],[V1,V2]). | regelsseq2([x,x],[[x,x,o,V1],[x,o,o,V2]],[V1,V2]). | ||
regelsseq2([S1,S2,S3|Seq],Regels,[V1|Volgende]):- | regelsseq2([S1,S2,S3|Seq],Regels,[V1|Volgende]):- | ||
regelsseq2([S2,S3|Seq],Regels,Volgende), | regelsseq2([S2,S3|Seq],Regels,Volgende), | ||
member([S1,S2,S3,V1],Regels). | member([S1,S2,S3,V1],Regels). | ||
regelsseq2([S1,S2,S3|Seq],[[S1,S2,S3,V1]|Regels],[V1|Volgende]):- | regelsseq2([S1,S2,S3|Seq],[[S1,S2,S3,V1]|Regels],[V1|Volgende]):- | ||
regelsseq2([S2,S3|Seq],Regels,Volgende), | regelsseq2([S2,S3|Seq],Regels,Volgende), | ||
\+member([S1,S2,S3,_],Regels). | \+member([S1,S2,S3,_],Regels). | ||
remove_doubles([L],[L]). | remove_doubles([L],[L]). | ||
remove_doubles([L|List],L2):- | remove_doubles([L|List],L2):- | ||
remove_doubles(List,L2), | remove_doubles(List,L2), | ||
member(L,L2). | member(L,L2). | ||
remove_doubles([L|List],[L|L2]):- | remove_doubles([L|List],[L|L2]):- | ||
remove_doubles(List,L2), | remove_doubles(List,L2), | ||
\+member(L,L2). | \+member(L,L2). | ||
geldig([_]). | geldig([_]). | ||
geldig([[X,Y,Z,_]|List]):- | geldig([[X,Y,Z,_]|List]):- | ||
geldig(List), | geldig(List), | ||
\+member([X,Y,Z,_],List). | \+member([X,Y,Z,_],List). |
Versie van 11 jun 2007 10:11
regels([S1,S2],Regels):-
regelsseq(S1,Regels,S2).
regels([S1,S2|Sequenties],Regels):-
regels([S2|Sequenties],R1), regelsseq(S1,R2,S2), merge(R1,R2,R3), remove_doubles(R3,Regels), geldig(Regels).
regelsseq(S1,Regels,S2):-
regelsseq2([o,o|S1],Regels,S2).
regelsseq2([o,o],o,o,o,V,[V,V]). regelsseq2([o,x],[[o,x,o,V1],[x,o,o,V2]],[V1,V2]). regelsseq2([x,o],[[x,o,o,V1],[o,o,o,V2]],[V1,V2]). regelsseq2([x,x],[[x,x,o,V1],[x,o,o,V2]],[V1,V2]).
regelsseq2([S1,S2,S3|Seq],Regels,[V1|Volgende]):-
regelsseq2([S2,S3|Seq],Regels,Volgende), member([S1,S2,S3,V1],Regels).
regelsseq2([S1,S2,S3|Seq],[[S1,S2,S3,V1]|Regels],[V1|Volgende]):-
regelsseq2([S2,S3|Seq],Regels,Volgende), \+member([S1,S2,S3,_],Regels).
remove_doubles([L],[L]). remove_doubles([L|List],L2):-
remove_doubles(List,L2), member(L,L2).
remove_doubles([L|List],[L|L2]):-
remove_doubles(List,L2), \+member(L,L2).
geldig([_]). geldig([[X,Y,Z,_]|List]):-
geldig(List), \+member([X,Y,Z,_],List).