DODATAK: PROGRAMIRANJE U PROGRAMSKIM JEZICIMA UMJETNE INTELIGENCIJE
% kodiranje tvrdnji
zagonetka(Kuce):-
postoji(kuca(crvena, britanac, _, _, _), Kuce),
postoji(kuca(_, svedjanin, _, _, pas), Kuce),
postoji(kuca(zelena, _, kava, _, _), Kuce),
postoji(kuca(_, danac, caj, _, _), Kuce),
desnoOd(kuca(bijela, _, _, _, _), kuca(zelena, _, _, _, _), Kuce),
postoji(kuca(_, _, _, jabuka, ptica), Kuce),
postoji(kuca(zuta, _, _, kruska, _), Kuce),
sredina(kuca(_, _, mlijeko, _, _), Kuce),
prva(kuca(_, norvezanin, _, _, _), Kuce),
nextTo(kuca(_, _, _, sljiva, _), kuca(_, _, _, _, macka), Kuce),
nextTo(kuca(_, _, _, kruska, _),kuca(_, _, _, _, konj), Kuce),
postoji(kuca(_, _, pivo, lubenica, _), Kuce),
postoji(kuca(_, nijemac, _, tresnja, _), Kuce),
nextTo(kuca(_, norvezanin, _, _, _), kuca(plava, _, _, _, _), Kuce),
nextTo(kuca(_, _, _, sljiva, _), kuca(_, _, voda, _, _), Kuce),
postoji(kuca(_, _, _, _, ribica), Kuce).
rjesenje(VlasnikRibice):-
zagonetka(Kuce),
postoji(kuca(_, VlasnikRibice, _, _, ribica), Kuce).
Na primjer prvu tvrdnju „Britanac živi u crvenoj kući.” smo definirali izrazom:
postoji(kuca(crvena, britanac, _, _, _), Kuce)
gdje je postoji(.,.) unaprijed definirana procedura, a kuca(_, _, _, _, _) predikat kojim
povezujemo boju, vlasnika, piće, voće i ljubimca.
Postavimo li upit:
? – rjesenje(VlasnikRibice)
dobit ćemo odgovor
VlasnikRibice = nijemac
Cijelu listu tko u kakvoj kući živi daje:
? – zagonetka(Kuce)
a odgovor glasi:
list(kuca(zuta, norvezanin, voda, kruska, macka), kuca(plava, danac, caj,
sljiva, konj), kuca(crvena, britanac, mlijeko, jabuka, ptica),
kuca(zelena, nijemac, kava, tresnja, ribica), kuca(bijela, svedjanin,
pivo, lubenica, pas))