تالار گفتمان مانشت

نسخه‌ی کامل: نوشتن این روابط با prolog
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
دوستان کسی میتونه اینو کامل کنه؛طوریکه پدربزرگ.مادربزرگ.عمه و دایی هم اضافه بشه
male('ali').
male('kazem').
female('zahra').
female('nahid').
female('sara').
parent('ali','kazem').
parent('zahra','kazem').
parent('ali','nahid').
parent('ali','sara').
father(x,y):-parent(x,y),male(X).
mother(x,y):-parent(x,y),female(Y).
sister(x,y):-parent(z,x),parent(z,y),female(x).
brother(x,y):-parent(z,x),parent(z,y),male(y).

spouse(X, Y) :- married(X, Y).
husband(X, Y) :- male(X), married(X, Y).
wife(X, Y) :- female(X), married(X, Y).
father(X, Y) :- male(X), parent(X, Y).
mother(X, Y) :- female(X), parent(X, Y).
sibling(X, Y) :- father(Z, X), father(Z, Y),
mother(W, X), mother(W, Y), not(X = Y).
brother(X, Y) :- male(X), sibling(X, Y).
sister(X, Y) :- female(X), sibling(X, Y).
grandparent(X, Z) :- parent(X, Y), parent(Y, Z).
grandfather(X, Z) :- male(X), grandparent(X, Z).
grandmother(X, Z) :- female(X), grandparent(X, Z).
grandchild(X, Z) :- grandparent(Z, X).
grandson(X, Z) :- male(X), grandchild(X, Z).
granddaughter(X, Z) :- female(X), grandchild(X, Z).
ancestor(X,Y) :- parent(X,Y).
ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).
child(Y, X) :- parent(X, Y).
son(Y, X) :- male(Y), child(Y, X).
daughter(Y, X) :- female(Y), child(Y, X).
descendent(Y, X) :- ancestor(X, Y).
auntoruncle(X, W) :- sibling(X, Y), parent(Y, W).
auntoruncle(X, Z) :- married(X,Y), sibling(Y,W), parent(W,Z).
uncle(X, W) :- male(X), auntoruncle(X, W).
aunt(X, W) :- female(X), auntoruncle(X, W).
cousin(X, Y) :- parent(Z, X), auntoruncle(Z, Y).
nieceornephew(X, Y) :- parent(Z, X), sibling(Z, Y).
nephew(X, Y) :- male(X), nieceornephew(X, Y).
niece(X, Y) :- female(X), nieceornephew(X, Y).
greatgrandparent(X, Z) :- parent(X, Y), grandparent(Y, Z).
greatgrandfather(X, Z) :- male(X), greatgrandparent(X, Z).
greatgrandmother(X, Z) :- female(X), greatgrandparent(X, Z).
greatgrandchild(X, Z) :- child(X, Y), grandchild(Y, Z).
greatgrandson(X, Z) :- male(X), greatgrandchild(X, Z).
greatgranddaughter(X, Z) :- female(X), greatgrandchild(X, Z).
parentinlaw(X, Y) :- married(Y, Z), parent(X, Z).
fatherinlaw(X, Y) :- male(X), parentinlaw(X, Y).
motherinlaw(X, Y) :- female(X), parentinlaw(X, Y).
siblinginlaw(X, Y) :- married(Y, Z), sibling(X, Z).
brotherinlaw(X, Y) :- male(X), siblinginlaw(X, Y).
sisterinlaw(X, Y) :- female(X), siblinginlaw(X, Y).
childinlaw(X, Y) :- married(X, Z), child(Z, Y).
soninlaw(X, Y) :- male(X), childinlaw(X, Y).
daughterinlaw(X, Y) :- female(X), childinlaw(X, Y).

منبع:
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
همراه با مثال
man ke motevajeh nashodam va fekr nakonam inghadr pichide bashe
مثال:من خودم یک سری رفتم فکر کنم در مورد خاله یا همون عمه اینطور درست باشه
unt(x,y):-parent(z,y),sister(z,x),famel(x).
اینو به ادامه چیزایی که نوشتم اضافه کنیم درست نمیشه؟
(13 اردیبهشت 1391 09:40 ب.ظ)mahyar_delsuz نوشته شده توسط: [ -> ]man ke motevajeh nashodam va fekr nakonam inghadr pichide bashe

اون چیزی که بالا گذاشتم، حالت کلی یک Family Tree هست... یعنی جد و آباد طرف رو در میاره Big Grin

(13 اردیبهشت 1391 09:40 ب.ظ)mahyar_delsuz نوشته شده توسط: [ -> ]مثال:من خودم یک سری رفتم فکر کنم در مورد خاله یا همون عمه اینطور درست باشه
unt(x,y):-parent(z,y),sister(z,x),famel(x).
اینو به ادامه چیزایی که نوشتم اضافه کنیم درست نمیشه؟

خب اینی که تو نوشتی میشه:
z والد y است
z خواهر x است
خب از این دو تا که نمیشه نتیجه گرفت x عمه ی y میشه
باید بنویسی:

[tex] aunt(x,y):-sister(x,z),parent(z,y)[/tex]

نیازی هم نیست که بنویسی x خانم است! چون توی sister بودن female بودن چک میشه! بود و نبودش فرقی نمیکنه... (اگه اشتباه نکنم فکر کنم فرقش فقط در سرعت باشه - یعنی محاسبات پایین میاد)


البته میتونی فقط عمه بودن (اینکه خاله رو در نظر نگیری) رو هم اینطور تعریف کنی:


[tex] aunt(x,w):-father(k,z),father(k,y),female(x),father(y,w)[/tex]

البته اینجا اگر female رو نگذاری عمو رو هم به عنوان خاله در نظر میگیره...

پس عمو بودن میشه:

[tex]uncle(x,w):-father(k,z),father(k,y),male(x),father(y,w)[/tex]

برای خاله هم باید اینطور بگی:

[tex] aunt(x,w):-father(k,z),father(k,y),female(x),mother(y,w)[/tex]

که دایی بودن میشه:

[tex]uncle(x,w):-father(k,z),father(k,y),male(x),mother(y,w)[/tex]

در حالت کلی میتونی هر نوع تعریفی که میدونی درسته رو انجام بدی... قوانین یکتا نیستند. مثلا همین عمه بودن رو میشه اینطور هم تعریف کرد:

[tex] aunt(x,w):-sister(x,y),father(y,w)[/tex]

و برای بقیه به همین طریق...
امیدوارم تونسته باشم کمکت کنم و البته گیج نشده باشی! (بس که قاطی پاتی جواب دادم!) Big Grin
فکر میکنم درست باشه.البته امتحانش میکنم.
ممنون بخاطر وقتی که گذاشتید
لینک مرجع