Minggu, 12 Januari 2014

Turbo Prolog - Silsilah Keluarga



Kode program di bawah ini merupakan tugas dari praktikum kecerdasan buatan yang ingin saya share ke agan-agan smw, dimana kode program ini dapat menampilkan nama saudara kandung, sepupu, saudara tiri, dan kakek dari nama yang kita input
 

Dan aturan pada program ini adalah
->Indra dan Mami mempunyai anak bernama Budiman, Hermawan, Shanti, Melani dan  Putra.
->Indra dan Ms. X mempunyai anak bernama Santoso dan gilang.
->Hendra dan Evi mempunyai anak bernama Hengki, Zaki dan Jono.
->Hengki dan Shanti mempunyai anak bernama Nena, Bayu dan Burhan.
->Hermawan dan Mawar mempunyai anak bernama Doni, Evi dan Bagus.


Lihat Kode Program
DOMAINS
nama = symbol

PREDICATES
ayah(nama,nama)
ibu(nama,nama)
kakek(nama,nama)
nenek(nama,nama)
saudara_kandung(nama,nama)
saudara_sepupu(nama,nama)
saudara_tiri(nama,nama)
menu
pilihan(integer)

CLAUSES

ayah(indra,budiman).
ayah(indra,hermawan).
ayah(indra,shanti).
ayah(indra,melani).
ayah(indra,putra).

ayah(indra,santoso).
ayah(indra,gilang).

ayah(hendra,hengki).
ayah(hendra,zaki).
ayah(hendra,jono).

ayah(hengki,nena).
ayah(hengki,bayu).
ayah(hengki,burhan).

ayah(hermawan,doni).
ayah(hermawan,evi).
ayah(hermawan,bagus).

ibu(mami,budiman).
ibu(mami,hermawan).
ibu(mami,shanti).
ibu(mami,melani).
ibu(mami,putra).

ibu(x,santoso).
ibu(x,gilang).

ibu(evi,hengki).
ibu(evi,zaki).
ibu(evi,jono).

ibu(shanti,nena).
ibu(shanti,bayu).
ibu(shanti,burhan).

ibu(mawar,doni).
ibu(mawar,evi).
ibu(mawar,bagus).

/* Aturan */

kakek(Kakek,Cucu) :-
ayah(Ayah,Cucu),
ayah(Kakek,Ayah).

kakek(Kakek,Cucu) :-
Ibu(Ibu,Cucu),
ayah(Kakek,Ibu).
nenek(Nenek,Cucu):-
ayah(Ayah,Cucu),
ibu(Nenek,Ayah).

nenek(Nenek,Cucu):-
ibu(Ibu,Cucu),
ibu(Nenek,Ibu).

saudara_kandung(Nama1,Nama2):-
ayah(Ayah,Nama1),
ayah(Ayah,Nama2),
ibu(Ibu,Nama1),
ibu(Ibu,Nama2),
Nama1 <> Nama2.

saudara_sepupu(Sdr1,Sdr2):-
ayah(Ayah1,Sdr1),
ayah(Ayah2,Sdr2),
saudara_kandung(Ayah1,Ayah2).

saudara_sepupu(Sdr1,Sdr2):-
ayah(Ayah,Sdr1),
ibu(Ibu,Sdr2),
saudara_kandung(Ayah,Ibu).

saudara_sepupu(Sdr1,Sdr2):-
ibu(Ibu,Sdr1),
ayah(Ayah,Sdr2),
saudara_kandung(Ibu,Ayah).

saudara_sepupu(Sdr1,Sdr2):-
ibu(Ibu1,Sdr1),
ibu(Ibu2,Sdr2),
saudara_kandung(Ibu1,Ibu2).

saudara_tiri(Nama,Name):-
ayah(Ayah,Nama), /*sodara tiri seayah*/
ayah(Ayah,Name),
ibu(Ibu1,Nama),
ibu(Ibu2,Name),
Nama <> Name,
Ibu1 <> Ibu2.


menu :-
clearwindow,
makewindow(2,27,110,"",5,10,15,60),
write(" Apa yang ingin anda ketahui ? "),nl,nl,nl,
write("1. Saudara kandung "),nl,
write("2. Saudara sepupu "),nl,
write("3. Saudara tiri "),nl,
write("4. Kakek "),nl,nl,

write(" Masukkan pilihan anda : "),
readint(Pilihan),
pilihan(Pilihan),menu.

pilihan(1):-
clearwindow,
makewindow(4,30,150," Saudara Kandung ",0,0,25,80),
write("Saudara kandung dari siapa ? "),readln(X),
saudara_kandung(Y,X),write ("Saudara kandung dari ",X, " adalah ",Y),nl,fail.

pilihan(2):-
clearwindow,
makewindow(4,30,150," Saudara Sepupu ",0,0,25,80),
write("Saudara sepupu dari siapa ? "),readln(X),
saudara_sepupu(X,Y),write ("Saudara sepupu dari ",X, " adalah ",Y),nl,fail.

pilihan(3):-
clearwindow,
makewindow(4,30,150," Saudara Tiri ",0,0,25,80),
write("Saudara tiri dari siapa ? "),readln(X),
saudara_tiri(X,Y),write ("Saudara tiri dari ",X, " adalah ",Y),nl,fail.

pilihan(4):-
clearwindow,
makewindow(4,30,150," Kakek ",0,0,25,80),
write("Kakek dari siapa ? "),readln(X),
kakek(Y,X),write ("Kakek dari ",X, " adalah ",Y),nl,fail.

Goal
menu,makewindow(3,24,67,"",0,0,25,80).



Dan hasil dari kode program diatas adalah :













1 komentar: