Programmeringssproget Prolog

Oprettet 28. januar 2008
Rettet 29. januar 2008

Øvelser og opgaver

1.

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.

2.

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.

3.

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"

4.

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.