|
|
نوشتن این روابط با prolog - نسخهی قابل چاپ |
|
نوشتن این روابط با prolog - mahyar_delsuz - 13 اردیبهشت ۱۳۹۱ ۰۴:۳۸ ب.ظ
دوستان کسی میتونه اینو کامل کنه؛طوریکه پدربزرگ.مادربزرگ.عمه و دایی هم اضافه بشه 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). |
|
RE: prolog - Mansoureh - 13 اردیبهشت ۱۳۹۱ ۰۶:۱۲ ب.ظ
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). منبع: مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید. همراه با مثال |
|
RE: prolog - mahyar_delsuz - 13 اردیبهشت ۱۳۹۱ ۰۹:۴۰ ب.ظ
man ke motevajeh nashodam va fekr nakonam inghadr pichide bashe مثال:من خودم یک سری رفتم فکر کنم در مورد خاله یا همون عمه اینطور درست باشه unt(x,y):-parent(z,y),sister(z,x),famel(x). اینو به ادامه چیزایی که نوشتم اضافه کنیم درست نمیشه؟ |
RE: prolog - Mansoureh - 14 اردیبهشت ۱۳۹۱ ۱۲:۲۱ ق.ظ
(۱۳ اردیبهشت ۱۳۹۱ ۰۹:۴۰ ب.ظ)mahyar_delsuz نوشته شده توسط: man ke motevajeh nashodam va fekr nakonam inghadr pichide bashe اون چیزی که بالا گذاشتم، حالت کلی یک Family Tree هست... یعنی جد و آباد طرف رو در میاره ![]() (۱۳ اردیبهشت ۱۳۹۱ ۰۹:۴۰ ب.ظ)mahyar_delsuz نوشته شده توسط: مثال:من خودم یک سری رفتم فکر کنم در مورد خاله یا همون عمه اینطور درست باشه خب اینی که تو نوشتی میشه: 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] و برای بقیه به همین طریق... امیدوارم تونسته باشم کمکت کنم و البته گیج نشده باشی! (بس که قاطی پاتی جواب دادم!)
|
|
RE: prolog - mahyar_delsuz - 14 اردیبهشت ۱۳۹۱ ۰۱:۵۴ ب.ظ
فکر میکنم درست باشه.البته امتحانش میکنم. ممنون بخاطر وقتی که گذاشتید |