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
  1. اكتب الـ Program تاني باستخدام Green Cut.
  2. اكتب الـ Program تالت باستخدام Red Cut.

Q2: max(X, Y, Max) with and without Cut

  1. اكتب دالة max من غير Cut.
  2. اكتب دالة max باستخدام Red Cut.

Q3: Conditional Function (X ≤ 5, X > 5)

  • اكتب دالة f(X, Y) تحقق العلاقة دي باستخدام Cut:
    1. ا Rule 1: لو X =< 5 يبقى Y = 3X
    2. ا Rule 2: لو X > 5 يبقى Y = X² + 5

Q4: Classify Number (Positive / Zero / Negative)

  • اكتب دالة class(Number, Category) تصنف الأعداد لـ positive, zero, أو negative باستخدام Cut.

Q5: Simple Functions

  1. اكتب دالة function(X, Y) تشوف: y = 3x + 2
  2. اكتب دالة fun(X, Y) تشوف: لو X ≤ 3 يبقى Y = 2X، ولو X > 3 يبقى Y = 4X + 5

Q6: split (Positives and Negatives)

  • اكتب دالة split(Numbers, Positives, Negatives) اللي بتقسم List الأرقام لـ List فيها الأرقام الموجبة (ومعاها الصفر) و List فيها الأرقام السالبة.

  • وجربها على: ?- split([3, -1, 0, 5, -2], P, N).


Q7: Tennis Player Classification

  • لو عندنا Database:
beat(tom, jim).
beat(ann, tom).
beat(pat, jim).
  • وصنفنا اللاعيبة لـ:

  • Winner: كسب كل الماتشات

  • Fighter: كسب وخسر ماتشات

  • Sportsman: خسر كل الماتشات

  • اكتب دالة class(Player, Category) باستخدام Cut.

  • طلع ناتج الاستعلامات دي:

    1. ?- class(tom, C).
    2. ?- class(ann, C).
    3. ?- class(jim, C).

Q8: member vs member1

  • اكتب ناتج الاستعلام ده باستخدام member:
?- member(X, [a, b, c]).
  • اكتب ناتج الاستعلام ده باستخدام member1 (اللي فيها Cut):
?- member1(X, [a, b, c]).
  • اشرح ليه النتائج مختلفة.

Q9: add with Cut (No Duplicates)

  • لو عندنا الدالة:
add(X, L, L) :- member(X, L), !.
add(X, L, [X|L]).
  • طلع ناتج الاستعلامات دي:

    1. ?- add(a, [b, c], L).
    2. ?- add(X, [b, c], L).
    3. ?- add(a, [b, c, X], L).
    4. ?- add(a, [a, b, c], L).
  • ايه اللي هيحصل لو شيلنا الـ Cut من الدالة فوق، وجربنا الاستعلام الرابع تاني؟


Nour Eldeen Mahmoud