FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Praktische Informatik

SE3 FP Blatt 12

SE3 FP Blatt 12 2007-02-19 14:24
Anonymer User
Da es ja keine Besprechung des Zettels 12 mehr gibt und Prolog ja in der Klausur dran kommt, würde ich gerne wissen, ob meine Lösung zu Aufgabe 3.1 richtig ist. Da das Aufgabenblatt nicht mehr abgeschickt werden muss, poste ich hier jetzt einfach meine Lösung:

1. ?Haus=Informatikum ?Farbe=weiss
2. keine Unifikation möglich
3. ?Farbe=Dame
4. ist das gleiche wie 3.
5. keine Unifikation möglich
6. ?farbe=Pik ?wert=AS
7. ?farbe=Pik ?Wert=AS ?wert2=AS

Ich wäre dankbar für eine Bestätigung bzw Verbesserung.
Falls jmd eine Lösung für 3.2 hat, könnten wir diese ja hier auch mal besprechen.

Re: SE3 FP Blatt 12 2007-02-19 14:34
enco
Bei 5 ist eine Unifikation möglich. Der Punkt (in .?andere) besagt nämlich, dass du vor dem Punkt den Kopf einer Liste hast und nach dem Punkt den Rest. Der Rest (?andere) kann also mit (k Herz Koenig) (k Kreuz Dame) unifiziert werden.

Re: SE3 FP Blatt 12 2007-02-19 15:38
Anonymer User
Also ist dann ?andere an (k Herz Koenig) (k Kreuz Dame) gebunden? Sind die anderen Unifikationen denn alle richtig?

Re: SE3 FP Blatt 12 2007-02-19 15:51
matten
Hi, hier sind noch meine Lösungen (Prolog in Scheme-Syntax):
1.
(define (fak x) (if (= x 1) 1 (* x (fak (- x 1)))))
(define memo-fak (memo fak))
(set! fak memo-fak)

2.
; Prädikat, überprüft ob x 7 ist oder 7 enthält
(define (is-seven? x)
(or (= (modulo x 7) 0)
(member #\7 (string->list
(number->string x)))))

; Strom der bösen Siebenen ab x
(define (bad-seven-from-n x)
(cons
(if (is-seven? x) 'sum x) ; generator
(delay
(bad-seven-from-n (+ 1 x)))))

; Strom der bösen Siebenen ab 1
(define bad-seven (bad-seven-from-n 1))

> (force-stream 21 bad-seven)
(1 2 3 4 5 6 sum 8 9 10 11 12 13 sum 15 16 sum 18 19 20 …)


3.1. unifikation wie oben,

3.2.1.
(?-
(ausleihe "K 110" ?)
(leser ?name ?vorname ? ?))

3.2.2.
(?-
(leser Linux Leo ?lesernummer ?))

3.2.3.
(?-
(leser ?name ?vorname ?ln ?)
(vorbestellung "P 30" ?ln))

3.2.4.
(<- (aelter60 ?name ?vorname)
:-
(leser ?name ?vorname ?ln ?jahr)
(ausleihe ?a1 ?ln)
(ausleihe ?a2 ?ln)
(test (< ?jahr (- 2007 60)))
(test (< ?a1 ?a2))

(?- (aelter60 ?name ?vorname))

3.2.5.
(<- (mehrals1buch ?name ?vorname)
:-
(leser ?name ?vorname ?ln ?jahr)
(ausleihe ?tit1 ?ln)
(ausleihe ?tit2 ?ln)
(test (< ?tit1 ?tit2))

(?- (mehrals1buch ?n ?v))




da ich auch keine antwort mehr von unserem tutor bekommen habe -> alles ohne gewähr!