%regel(Nr, Praemissen,Konklusion,Bedingungen) regel(1,pflanze,baum,[stamm,gross]). regel(2,pflanze,busch,[blaetter,mittelgross]). regel(3,pflanze,blume,[bunt,klein]). regel(4,baum,nadelbaum,[immergruen, nadeln]). regel(5,nadelbaum,nordmanntanne,[weich]). regel(6,busch,kirschlorbeer,[immergruen]). regel(7,blume,rose,[dornen]). regel(8,blume,sonnenblume,[gelb,kerne]). anfrage(gross,[ist,die,pflanze,gross]). anfrage(stamm,[hat,die,pflanze,einen,stamm]). anfrage(blaetter,[hat,die,pflanze,blaetter]). anfrage(mittelgross,[ist,die,pflanze,mittelgross]). anfrage(bunt,[ist,die,pflanze,bunt]). anfrage(klein,[ist,die,pflanze,klein]). anfrage(immergruen,[ist,die,pflanze,immergruen]). anfrage(nadeln,[hat,die,pflanze,nadeln]). anfrage(weich,[sind,die,nadeln,weich]). anfrage(dornen,[hat,die,pflanze,dornen]). anfrage(gelb,[blueht,die,pflanze,gelb]). anfrage(kerne,[hat,die,pflanze,kerne]). %bereinige loescht hinzugefuegte Fakten, fuhert gefunden und faktum als %neue Fakten ein klassifiziere:-bereinige,erkenne(pflanze). erkenne(Praemisse):-regel(RNr,Praemisse,Konkl,Bedingungen), ueberpruefe(Bedingungen), merke(RNr), drucke_Erg(Konkl), erkenne(Konkl). erkenne(_):-gefunden(X),X=\=0,write('Mehr weiss ich nicht!'),nl. erkenne(_):-gefunden(0),write('Die Pflanze kenne ich nicht'),nl. merke(RNr):-gefunden(RNr). merke(RNr):-assert(gefunden(RNr)). ueberpruefe([]). ueberpruefe([Bed|WeitereBed]):- frage(Bed), ueberpruefe(WeitereBed). frage(B):-faktum(B,'ja'),!. frage(B):-faktum(B,'nein'),!,fail. frage(B):-anfrage(B,Text), schreibe_Liste(Text), write('?'),nl, read(Antwort), assert(faktum(B,Antwort)), Antwort==ja. drucke_Erg(Konkl):-nl,write('Die Pflanze ist ein/eine '),write(Konkl),nl,nl. bereinige:-retractall(faktum(_,_)), retractall(gefunden(_)), assertz(gefunden(0)), %Hilfsfakt assertz(faktum(jg,'nein')). %Hilfsfakt schreibe_Liste([]). schreibe_Liste([K|Rest]):-write(K),write(' '),schreibe_Liste(Rest).