2016-04-10 5 views
-1

Ich möchte zwei Prolog-Beziehungen erstellen und ihre Definitionen in einer einzigen Prolog-Datei platzieren. Definieren Sie das Beziehungs-Präfix und Postfix für Listen, was bedeutet, dass das erste Argument ein Präfix oder Postfix des zweiten Arguments ist.Ich möchte zwei Prolog Beziehungen erstellen und ihre Definitionen in einer einzigen Prolog-Datei

?- consult(prepost). 

% prepost compiled 0.00 sec, 956 bytes 

true. 


?- prefix([a,b,c],[a,b,c,e,f]). 

true. 

?- prefix([a,b,c], [a,b,e,f]). 

false. 

?- prefix([a,b],[a]). 

false. 


?- prefix([],[a,b,c,d]). 

true. 

?- prefix(X,[a,b,c,d]). 

X = [] ; 

X = [a] ; 

X = [a, b] ; 

X = [a, b, c] ; 

X = [a, b, c, d] ; 

false. 

?- postfix([n,e],[d,o,n,e]). 
true . 

?- postfix([],[a,n,y,t,h,i,n,g]). 

true . 

?- postfix([a,b,c],[a,b,c,d,e]). 

false. 

?- postfix(X,[a,b,c,d]). 

X = [a, b, c, d] ; 

X = [b, c, d] ; 

X = [c, d] ; 

X = [d] ; 

X = [] ; 

false. 

?- 

Antwort

1

können Sie das Prädikat verwenden append/3 Ihr Problem auf einfache Art und Weise zu lösen. Eine Liste von Elementen ist das Präfix einer anderen Liste. Wenn es eine Kombination gibt, bei der diese erste Liste mit einer anderen verkettet ist (nicht relevant), ergibt dies Ihre vollständige Liste.

prefix(Prefix_list, Full_list):- append(Prefix_list, _, Full_list). 

Sie können Ihr Prädikat postfix/2 auf die gleiche Art und Weise ableiten:

postfix(Postfix_list, Full_list):- append(_, Postfix_list, Full_list). 

Jetzt setzen sowohl Prädikat in einer Textdatei, nennen Sie es prepost.pl, und das ist es.

Verwandte Themen