? users online
  • Logout
    • Open hangout
    • Open chat for current file
<div class="notebook open-fullscreen">

<div class="nb-cell markdown" name="md1">
## Repräsentation von Modellen in Prolog
</div>

<div class="nb-cell markdown" name="md2">
**Programmierübung:**
Schreibe ein Prädikat =isModel/1=, das überprüft, ob ein Modell ein Modell in Prolognotation ist. Als Argument erhält das Prädikat ein Modell in der obigen Notation =model/2=. Dazu müssen wir zwei Sachen überprüfen:
	1. Was sind gültige Einträge für die Domäne =D=?
	2. Was sind gültige Einträge für =F= und taucht jeder Eintrag höchstens ein mal auf?

Die Prädikate =sublist/2= und =pairlist/2= können euch helfen, Punkt zwei zu prüfen. Die reichen aber nicht aus, ihr benötigt noch weitere Hilfsprädikate!
</div>

<div class="nb-cell program" name="p1">
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Eure Lösung:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Hilfsprädikate:
sublist([],_L).
sublist([H|T],L):-
    member(H,L),
    sublist(T,L).

pairlist([],_L).
pairlist([(A,B)|T],L):-
    member(A,L),
    member(B,L),
    pairlist(T,L).
</div>

<div class="nb-cell query" name="q1">
isModel(model([d1,d2,d3,d4,d5],[f(0,mia,d3),f(1,robber,[d2,d4,d5]),f(2,love,[(d2,d3),(d1,d4)])])).
</div>

</div>