Chapter 6 - Practice
Q1: f(X,Y) With 3 Rules + Query
- لو عندنا الـ Rules دي:
f(X, 0) :- X < 3. % Rule 1
f(X, 2) :- 3 =< X, X < 6. % Rule 2
f(X, 4) :- 6 =< X. % Rule 3
- اكتب الـ Program تاني باستخدام Green Cut.
- اكتب الـ Program تالت باستخدام Red Cut.
Solution (f(X,Y) with 3 Rules)
Q2: max(X, Y, Max) with and without Cut
- اكتب دالة
maxمن غير Cut. - اكتب دالة
maxباستخدام Red Cut.
Solution (max with and without Cut)
Q3: Conditional Function (X ≤ 5, X > 5)
- اكتب دالة
f(X, Y)تحقق العلاقة دي باستخدام Cut:- ا Rule 1: لو
X =< 5يبقىY = 3X - ا Rule 2: لو
X > 5يبقىY = X² + 5
- ا Rule 1: لو
Solution (Conditional Function)
Q4: Classify Number (Positive / Zero / Negative)
- اكتب دالة
class(Number, Category)تصنف الأعداد لـ positive, zero, أو negative باستخدام Cut.
Solution (Classify Number)
Q5: Simple Functions
- اكتب دالة
function(X, Y)تشوف:y = 3x + 2 - اكتب دالة
fun(X, Y)تشوف: لو X ≤ 3 يبقى Y = 2X، ولو X > 3 يبقى Y = 4X + 5
Solution (Simple Functions)
Q6: split (Positives and Negatives)
-
اكتب دالة
split(Numbers, Positives, Negatives)اللي بتقسم List الأرقام لـ List فيها الأرقام الموجبة (ومعاها الصفر) و List فيها الأرقام السالبة. -
وجربها على:
?- split([3, -1, 0, 5, -2], P, N).
Solution (split/3)
Q7: Tennis Player Classification
- لو عندنا Database:
beat(tom, jim).
beat(ann, tom).
beat(pat, jim).
-
وصنفنا اللاعيبة لـ:
-
Winner: كسب كل الماتشات
-
Fighter: كسب وخسر ماتشات
-
Sportsman: خسر كل الماتشات
-
اكتب دالة
class(Player, Category)باستخدام Cut. -
طلع ناتج الاستعلامات دي:
?- class(tom, C).?- class(ann, C).?- class(jim, C).
Solution (Tennis Classification)
Q8: member vs member1
- اكتب ناتج الاستعلام ده باستخدام
member:
?- member(X, [a, b, c]).
- اكتب ناتج الاستعلام ده باستخدام
member1(اللي فيها Cut):
?- member1(X, [a, b, c]).
- اشرح ليه النتائج مختلفة.
Solution (member vs member1)
Q9: add with Cut (No Duplicates)
- لو عندنا الدالة:
add(X, L, L) :- member(X, L), !.
add(X, L, [X|L]).
-
طلع ناتج الاستعلامات دي:
?- add(a, [b, c], L).?- add(X, [b, c], L).?- add(a, [b, c, X], L).?- add(a, [a, b, c], L).
-
ايه اللي هيحصل لو شيلنا الـ Cut من الدالة فوق، وجربنا الاستعلام الرابع تاني؟
Solution (add with Cut)