تخمين اسم الحيوان باستخدام لغة برولوج | Guess the animal's name using Prolog
في هذا المقال سوف نتعرف معكم على كود جديد من اكواد لغة برولوج وفي هذا المقال سوف نقدم لكم كود يمكنك من معرفة انواع لبعض الحيوان من خلال مجموعة من الاساله التي يطرحها التطبيق عليك , وبناء على الاجابات سوف يخرج لك الاجابة التي تبحث عنها وكثير من التطبيقات والبرامج تعمل بنفس الطريقة هذه بمعنى يكون لديك حيوان السمكه لكي يعرف هذا الحيوان يقوم بطرح مجموعة من الاساله عليك وبناء على الاجابات التي تضعها سوف يخرج لك الحيوان مثلا هل الحيوان من الثديات هل الحيوان يلد ام يبيض هل الحيوان يحتوي على شعر وبناء على اجاباتك يعرف ماذا ترغب وبهذا يخرج لك الاجابة كما هو موضح يمكنك استخدام الكود التالي وتجربة لكي تصل الى الاجابة التي ترغب بها , وهذا التطبيق واحد من التطبيقات البسيطه التي توضح لنا قوة الprolog في البرمجة وتوضح لماذا يتم طلب هذه اللغه في بعض الاعمال .
لغة prolog واحده من اكثر لغات البرمجة المعقدة و code برولوج ليس من الاكواد السهله ولكنه مهمه في نفس الوقت لانه يمكنك من خلال تعلم البرولوج ان تصنع machine قوي وابسط review على ذلك وهو الربوت صوفيا بتمت عملت writing بواسطة prologue مع debugger و rule لتمكين الربوت من التعامل مع البشر ولكننا لن نصل معكم الى هذا المستوى فسوف نقدم لكم اشياء بسيطة و examples على ذلك برنامج لجمع وضرب وتقسيم رقمين او شجرة العائلة واشياء simple .
compiler البرلوج هو swi وهذا ما سنعمل عليه حيث يتم كتابة input في صفحة و output في صفحة اخرى , هذة اللغة تعتمد بشكل كبير على facts و logic وال program الخاص بها ليس كبير الحجم واغلب العاملين بهذة اللغة هم programming الكبار لان اللغة ليس سهله ولكن في نفس الوقت ليس بالصعوبه التي تتوقعها .
Guess the animal's name using Prolog language
الكود ببساطة يعمل على تحديد الحيوان بناء على الاسالة التي نطرحها على المستخدم وكما نعلم ان لغة برولوج تستخدم في الذكاء الاصطناعي ايضا وهذا الكود بسيط جدا وفكرته رائعه .
prolog.code
go :- hypothesize(Animal),
write('I guess that the animal is: '),
write(Animal), nl, undo.
hypothesize(cats) :- cats, !.
hypothesize(dogs) :- dogs, !.
hypothesize(bats) :- bats, !.
hypothesize(fish) :- fish, !.
hypothesize(unknown).
cats :- mammal, carnivore,
verify(eats_fish).
dogs :- chase, mammal,
verify(chase_cats).
bats :- mammal,birds,
verify(have_wings).
fish :- animals,swim,
verify(eat_worms).
animals :- verify(are_mammal),!.
animals :- verify(can_swim),!.
swim :- animals,verify(can_swim), !.
mammal :- verify(has_fur), !.
mammal :- verify(have_wings), !.
carnivore :- verify(eats_fish), !.
chase :- verify(are_mammal), !.
birds :- mammal ,verify(can_fly), !.
ask(Question) :-
write('Does the animal have the following attribute: '),
write(Question), write('? '),
read(Response), nl,
( (Response == yes ; Response == y)
-> assert(yes(Question)) ;
assert(no(Question)), fail).
:- dynamic yes/1,no/1.
verify(S) :- (yes(S) -> true ; (no(S) -> fail ; ask(S))).
undo :- retract(yes(_)),fail.
undo :- retract(no(_)),fail.
undo.