• Keine Ergebnisse gefunden

Übungsserie 4 Programmierung mit Prolog

N/A
N/A
Protected

Academic year: 2021

Aktie "Übungsserie 4 Programmierung mit Prolog"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Modellierung und Programmierung 2

Hinweise Abgabe: http://moodle2.uni-leipzig.de/course/view.php?id=1206

Übungsserie 4

Programmierung mit Prolog

Hinweis: Verwenden Sie für die Übungsaufgaben den SWI-Prolog-Interpreter. Unter http:// www.swi-prolog.org finden Sie unter anderem eine aktuelle Version für verschiedene Betriebssysteme und eine Dokumentation. Sie können den Interpreter mit dem Befehl

swipl

(in den Computerpools mit

pl

) starten. Man lädt eine Datei durch

consult( ’filename’).

und mit

halt.

verlässt man den Interpreter. Achten Sie auf den abschließenden Punkt! Weitere Hilfestellung erhalten Sie wenn Sie

help.

eingeben.

Aufgabe 13 Gegeben ist die folgende Datenbank:

1

m a l e ( tom ) .

2

m a l e ( b e r n d ) .

3

m a l e ( k l a u s ) .

4

m a l e ( s i m o n ) .

5

m a l e ( d a v i d ) .

6

m a l e ( h u g o ) .

7

f e m a l e ( a n n a ) .

8

f e m a l e ( s u s i ) .

9

f e m a l e ( k a r i n ) .

10

f e m a l e ( k l a r a ) .

11

/* l i k e s ( X , Y ) - X mag Y */

12

l i k e s ( tom , d o g s ) .

13

l i k e s ( anna , tom ) .

14

l i k e s ( hugo , w i n e ) .

15

l i k e s ( susi , d o g s ) .

16

l i k e s ( simon , d o g s ) .

17

l i k e s ( simon , a n n a ) .

18

/* p a r e n t ( X , Y ) - X ist E l t e r n t e i l von Y */

19

p a r e n t ( klaus , b e r n d ) .

20

p a r e n t ( klaus , tom ) .

21

p a r e n t ( simon , d a v i d ) .

22

p a r e n t ( simon , k l a r a ) .

23

p a r e n t ( karin , d a v i d ) .

24

p a r e n t ( karin , h u g o ) .

25

p a r e n t ( karin , k l a r a ) .

Modellieren Sie folgende Regeln in Prolog und speichern Sie diese zusammen mit der Datenbank in einer Datei family.pl.

• mother(X,Y): X ist die Mutter von Y

• father(X,Y): X ist der Vater von Y

• parents(X,Y): X und Y haben ein Kind

• brother(X,Y): X ist der Bruder von Y

• sister(X,Y): X ist die Schwester von Y

• son(X,Y): X ist der Sohn von Y

• daughter(X,Y): X ist die Tochter von Y

• likes(X,Y): Jeder mag seine Kinder und Eltern

• likes(klaus, Y): Klaus mag jeden, der Hunde mag

1

(2)

Aufgabe 14 Schreiben Sie eine Relation welche den Binomialkoeffizienten zweier natürlicher Zahlen

ab

bestimmt. Eine Defintion finden Sie in Aufgabe 5 der zweiten Übungsserie.

Verwenden Sie hierfür eine selbst implementierte Fakultätsrelation. Speichern Sie Ihr fertiges Programm in einer Datei binom.pl ab.

Aufgabe 15 Schreiben Sie Relationen zur Berechnung der folgenden Aufgaben in ein Prolog- Programm rechnen.pl . Beschreiben Sie darin auch in Kommentaren kurz Ihr Herangehen beziehungsweise wie Ihre Relationen zu benutzen sind.

• Das Quadrat einer Zahl.

• Das Minimum von drei Zahlen.

• Die Summe der natürlichen Zahlen von 1 bis n.

• Die Funktion sign ermittelt das Vorzeichen einer Zahl. Ausgabe: -1, 0 oder 1.

Aufgabe 16 Implementieren Sie eine Relation in einer Programmdatei magisch.pl , welche eine Liste mit 3 Listen der Länge 3 als Einträgen, also eine 3 × 3 Matrix, daraufhin überprüft, ob sie die Zahlen 1 bis 9 als Permutation enthält und sich wie ein magisches Quadrat verhält. Das heißt, dass alle Spalten, Zeilen und beide Diagonalen der Länge 3 dieselbe Summe ergeben. Hinweis: Ob eine Liste A eine Permutation einer Liste B ist, kann man mit der eingebauten Relation permutation( A, B ) überprüfen.

Zusatzaufgabe 4 Lösen Sie das folgende Rätsel mit Hilfe einer Faktendatenbank, welche Sie in raeuber.pl speichern. Diese Programmdatei soll nur die gegebenen Fakten und die nötigen Regeln zum Lösen des Rätsels, aber keine von Ihnen zusätzlich herausgefundenen Fakten, enthalten! Das Rätsel lautet:

Gestern Nacht wurde der Tresor einer Bank ausgeraubt. Finden Sie unter den fünf Männern, welche die Kombination kennen, denjenigen heraus, der gestern abend allein war.

• Mr. Jones ist dick und fährt einen VW.

• Mr. Smith fährt einen Jaguar und ist Engländer.

• Der dünne Mann fährt einen Fiat.

• Mr. Poole ist Schotte.

• Mr. Kent trägt einen blauen Anzug.

• Der dicke Mann trägt einen schwarzen Anzug.

• Der dünne Mann ist Ire.

• Mr. Bright trägt einen grünen Anzug und fährt einen Renault.

• Der kleine Mann ist Schotte.

• Der dünne Mann trägt einen blauen Anzug.

• Der Mann normaler Statur ist Kanadier.

• Der Mann im grauen Anzug fährt einen Mazda.

• Der Mann im schwarzen Anzug ist Waliser.

• Der große Mann tärgt einen braunen Anzug.

• Letzte Nacht war der Waliser mit dem Kanadier zusammen.

• Letzte Nacht war der große Mann mit dem Mazdafahrer zusammen.

2

Referenzen

ÄHNLICHE DOKUMENTE

Ferner soll ein Index angelegt werden, ¨uber den ein effizienter Zugriff auf alle B¨ucher eines Autors m¨oglich ist (d.h. der Iterator kann entfallen) Von der Klasse SearchTree

• Der Balancer registriert sich beim Broker als Service-Anbieter, stellvertretend f¨ur die Server, die den eigentlichen Dienst zur Verf¨ugung stellen.. Die Registrierung

Der Client pr¨uft, ob seine lokale Uhr mit der des Servers gut genug synchronisiert ist, indem er drei Zeitstempel betrachtet: zur Zeit t 1 erfolgt der RMI-Aufruf, zur Zeit t 2

1. Die Hamburg AG erwirbt eine Produktionsanlage. Wie hoch sind die Anschaffungskosten dieser Anlage? Begründen Sie Ihr Ergebnis!.. Es liegen folgende

[r]

Wir werden feststellen, dass sich diese in gewisser Weise besser verhalten als symmetrische Bilinearformen, denn wir erhalten hier eine Normalform über jedem Körper..

Aufgabe 9 Implementieren Sie in einer Datei binom.cl eine Funktion zur Berechnung der Fakultät einer natürlichen Zahl n, sowie eine darauf aufbauende Funktion zur Bestimmung

Unter http:// www.swi-prolog.org finden Sie unter anderem eine aktuelle Version für verschiedene Betriebssysteme und eine Dokumentation!. Man lädt eine Datei durch