Med udgangspunkt i et familiestamtræ skal der udarbejdes forespørgsler, som kan afgøre følgende slægtsforhold:
søster(X, Y) - sand, hvis X er søster til Y.
bror(X, Y) - sand, hvis X er bror til Y.
farfar(X, Y) - sand hvis X er farfar til Y.
farmor(X, Y) - sand hvis X er farmor til Y.
morfar(X, Y) - sand, hvis X er morfar til Y.
mormor(X, Y) - sand, hvis X er mormor til Y.
fætter(X, Y) - sand, hvis X er fætter til Y.
kusine(X, Y) - sand, hvis X er kusine til Y.
efterkommer(X, Y) - sand, hvis X er efterkommer efter Y.
forgænger(X, Y) - sand, hvis X er forgænger for Y.
Udarbejd løsninger på følgende problemer:
fjern_duplikater(Liste1, Liste2) - undersøger om der er duplikater blandt elementerne i Liste1 - hvis der er, fjernes disse fra listen og der opbygges en ny Liste2, som er identisk med Liste1 minus eventuelle duplikater.
sidste-element(Element, Liste) - returnerer det sidste element i listen.
count(N, Liste) - tæller antallet af elementer i listen.
position(Element, Liste, N) - returnerer positionen for et bestemt element i listen - findes elementet ikke returneres 0.
Vejledende løsninger for sidste-element og count kan findes her.
Lav et program, som kan kontrollere korrektheden af nedenstående BNF-syntaks:
<expression> ::= <term> | <term> "+" <expression>
<term> ::= <factor> | <factor> "*" <term>
<factor> ::= <constant> | "(" <expression> ")"
<constant> ::= <digit>
<digit> ::= "0" | "1" | "2" | "3"
| "4" | "5" | "6" | "7" | "8"
| "9"
Lav et Prolog program, som kan kontrollere korrektheden af sætninger, som burde være korrekte i forhold til nedenstående syntaks:
<sentence> ::= <noun_phrase> <verb_phrase>
<verb_phrase> ::= <verb> <noun_phrase>
<noun_phrase> ::= <determiner> <noun>
<determiner> ::= a | the
<noun> ::= cat | mouse
<verb> ::= scares | hates
Find på sætninger, der er rigtige og sætninger, der er forkerte - og check dem med programmet.