Domains

7
domains lista=string* predicates % judet, indicativ, populatie, suprafata, lista de orase % (primul e resedinta) judet(string,string,real,real,lista) string2list(string,lista) raspuns(string) writelist(lista) clauses string2list("",[]) if !. string2list(S,[H|T]) if fronttoken(S,H,R),string2list(R,T). writelist([]). writelist([H|T]) if write(H), write(", "), writelist(T). judet("Bacau","BC",628640,6621, ["Bacau","Onesti","Moinesti","Comanesti","Buhusi","Darmanesti","Targu Ocna", "Slanic Moldova"]). judet("Iasi","IS",774075,5476,["Iasi","Pascani","Targu Frumos","Harlau","Podu Iloaiei"]). judet("Neamt","BV",507399,5896,["Piatra Neamt","Roman","Targu Neamt","Bicaz","Roznov"]). raspuns(Intrebare) if string2list(Intrebare,["capitala","judetului",Judet]), judet(Judet,_,_,_,[Capitala|_]), write(Capitala), nl. Calcul domains listas=string* predicates membru(string,listas) standard(string,listas) string2list(string,listas) afisare(listas) simplifica(listas,listas) ordoneaza(listas,listas) evaluare(listas,integer) run clauses

description

Prolog

Transcript of Domains

domains lista=string*predicates % judet, indicativ, populatie, suprafata, lista de orase % (primul e resedinta) judet(string,string,real,real,lista) string2list(string,lista) raspuns(string) writelist(lista) clauses string2list("",[]) if !. string2list(S,[H|T]) if fronttoken(S,H,R),string2list(R,T). writelist([]). writelist([H|T]) if write(H), write(", "), writelist(T). judet("Bacau","BC",628640,6621,["Bacau","Onesti","Moinesti","Comanesti","Buhusi","Darmanesti","Targu Ocna","Slanic Moldova"]). judet("Iasi","IS",774075,5476,["Iasi","Pascani","Targu Frumos","Harlau","Podu Iloaiei"]). judet("Neamt","BV",507399,5896,["Piatra Neamt","Roman","Targu Neamt","Bicaz","Roznov"]).

raspuns(Intrebare) if string2list(Intrebare,["capitala","judetului",Judet]), judet(Judet,_,_,_,[Capitala|_]), write(Capitala), nl.

Calculdomainslistas=string*predicatesmembru(string,listas)standard(string,listas)string2list(string,listas)afisare(listas)simplifica(listas,listas)ordoneaza(listas,listas)evaluare(listas,integer)runclausesmembru(X,[X|_]) if !.membru(X,[_|T]) if membru(X,T).standard("1",["1","o","un","unu","one"]).standard("0",["0","zero","nicio","niciun","any"]).standard("2",["2","doi","doua","two"]).standard("3",["3","trei","three"]).standard("4",["4","patru","four"]).standard("5",["5","cinci","five"]).standard("6",["6","sase","six"]).standard("7",["7","sapte","seven"]).standard("8",["8","opt","eight"]).standard("9",["9","noua","nine"]).standard("10",["10","zece","ten"]).standard("+",["+","plus","adunat","cu","suma", "adunate","adunati","insumat", "with"]).standard("-",["-","minus","fara","scazut","without"]).standard("*",["*","x","ori","times","inmultit","inmultite", "inmultita","inmultiti","multiplicat"]).standard("/",["/",":","supra","divided","impartit","impartite", "impartiti","impartita","raportul"]).string2list("",[]) if !.string2list(S,[H|T]) if fronttoken(S,H,Rest), string2list(Rest,T).afisare([]) if nl,!.afisare([H|T]) if write(H), write(","), afisare(T).simplifica([],[]) if !.simplifica([H|T],[X|T1]) if standard(X,L), membru(H,L), simplifica(T,T1),!.simplifica([_|T],T1) if simplifica(T,T1).ordoneaza([X,Op,Y],[X,Op,Y]) if membru(Op,["+","-","*","/"]),!.ordoneaza([Op,X,Y],[X,Op,Y]) if membru(Op,["+","-","*","/"]),!.ordoneaza([X,Y,Op],[X,Op,Y]) if membru(Op,["+","-","*","/"]).evaluare([X,"+",Y],V) if str_int(X,A),str_int(Y,B),V=A+B.evaluare([X,"-",Y],V) if str_int(X,A),str_int(Y,B),V=A-B.evaluare([X,"*",Y],V) if str_int(X,A),str_int(Y,B),V=A*B.evaluare([X,"/",Y],V) if str_int(X,A),str_int(Y,B),V=A/B.run if write("Dati propozitia: "), readln(S), string2list(S,L),write("Lista cuvintelor: "), afisare(L),write("Lista simplificata si standardizata: "),simplifica(L,LS), afisare(LS), ordoneaza(LS,LO), write("Lista ordonata, cu operatorul la mijloc: "),afisare(LO), evaluare(LO,V), write("Rezultatul este: "),write(V),write(" animale"), nl.

coruptiidomainspersoana=symbolserviciu=symbolpredicateslucreaza(persoana,serviciu)situatie(persoana,symbol)tip_serviciu(serviciu,symbol)corupt(persoana)clausestip_serviciu(ani,stat).tip_serviciu(dna,stat).tip_serviciu(universitate,stat).tip_serviciu(primarie,stat).tip_serviciu(interauto,privat).lucreaza(georgescu,ani).lucreaza(patrut,universitate).lucreaza(cornescu,interauto).lucreaza(kovesi,dna).lucreaza(oprescu,primarie).situatie(georgescu,buna).situatie(kovesi,normala).situatie(patrut,proasta).situatie(oprescu,normala).situatie(cornescu,buna).corupt(P) if lucreaza(P,S), tip_serviciu(S,stat), situatie(P,buna).

goalrun

mariadomainspersoana=symbolbautura=symbolpredicatesfemeie(persoana)barbat(persoana)inaltime(persoana,integer)bea(persoana,bautura)nufumeaza(persoana)contine_alcool(bautura)intalneste(persoana,persoana)clausesfemeie(maria). femeie(ioana).barbat(costel). barbat(ion).barbat(vasile).nufumeaza(vasile). nufumeaza(costel).bea(ion,suc).bea(vasile,bere).contine_alcool(bere).contine_alcool(vin).inaltime(ion,175).inaltime(vasile,180).inaltime(costel,185).inaltime(maria,176).intalneste(maria,B) if nufumeaza(B), not(bea(B,_)), inaltime(B,H),inaltime(maria,H1), H>H1.intalneste(maria,B) if nufumeaza(B), bea(B,X), not(contine_alcool(X)),inaltime(B,H), inaltime(maria,H1), H>H1.

domainspersoana=symbolbautura=symbolpredicatesplace(persoana,bautura)clausesplace(maria,cafea)place(ion,vin)place(ion,ceva)goalrun

silabedomainslistac=char*predicatesvocala(char)consoana(char)string2list(string,listac)membru(char,listac)afiseaza(listac)diftong(char,char)hiat(char,char)grupexceptie(listac)desparte(listac,listac)runclausesmembru(X,[X|_]) if !.membru(X,[_|T]) if membru(X,T).

vocala('a'). vocala('e'). vocala('i').vocala('u'). vocala('o'). vocala('y').consoana(X) if not(vocala(X)).diftong('a','i').diftong('e','a').diftong('o','a').diftong('y','a').diftong('e','u').hiat('a','e').hiat('a','i').hiat('o','e').hiat('i','e').string2list("",[]) if !.string2list(S,[H|T]) if frontchar(S,H,R),string2list(R,T).afiseaza([]) if nl, !.afiseaza([H|T]) if write(H), afiseaza(T).

grupexceptie(['l','p','t']).grupexceptie(['m','p','t']).grupexceptie(['n','c','t']).grupexceptie(['n','c','s']).grupexceptie(['n','d','v']).grupexceptie(['r','c','t']).grupexceptie(['r','t','f']).grupexceptie(['s','t','m']).grupexceptie([C1,C2]) if membru(C1, ['b','c','d','f','g','h','p','t','v']),membru(C2,['l','r']).desparte([],[]) if !.desparte([X],[X]) if !.desparte([X,Y],[X,Y]) if vocala(X), vocala(Y), diftong(X,Y),!.desparte([X,Y],[X,'-',Y]) if vocala(X), vocala(Y), hiat(X,Y),!.desparte([X,Y],[X,Y]) if vocala(X), consoana(Y),!.desparte([X,Y],[X,Y]) if consoana(X), vocala(Y),!.desparte([X|T],[X|L]) if consoana(X), desparte(T,L).

%regula 1 si 1bdesparte([X,Y,Z|T],[X,'-',Y|L]) ifvocala(X), consoana(Y), vocala(Z),desparte([Z|T],L), !.% regula 1adesparte([X,Y|T],[X|L]) if vocala(X), vocala(Y), diftong(X,Y),desparte([Y|T],L).%regula 1c% ch etc.

%regula 2 exceptiiledesparte([V1,C1,C2,V2|T],[V1,'-',C1,C2|L]) if grupexceptie([C1,C2]),desparte([V2|T],L),!.%regula 2desparte([V1,C1,C2,V2|T],[V1,C1,'-',C2|L]) if desparte([V2|T],L).% regula 3% intai exceptiiledesparte([V1,C1,C2,C3,V2|T],[V1,C1,C2,'-',C3|L]) if grupexceptie([C1,C2,C3]),desparte([V2|T],L),!.%apoi reguladesparte([V1,C1,C2,C3,V2|T],[V1,C1,'-',C2,C3|L]) if desparte([V2|T],L).

% regula 4desparte([X,Y|T],[X,'-'|L]) if vocala(X), vocala(Y), hiat(X,Y), desparte([Y|T],L).run if write("Dati cuvantul: "), readln(Cuvant),string2list(Cuvant,Lista), afiseaza(Lista), nl,desparte(Lista,Silabe),afiseaza(Silabe).goalrun