מבחן בתכנות לוגי (פרולוג) ד"ר נועם חזון סמסטר ב' ,מועד ב' ,תשע"ד זמן הבחינה 150 :דקות מותר להשתמש רק בדפי הנוסחאות המצורפים נא לכתוב בכתב ברור שאלה 1 כתבו את הפרדיקט add_up_list/2שמקבל רשימה של מספרים שלמים ,ומחזיר רשימה בה האיבר במקום ה i -הוא סכום כל האיברים עד המקום ה i -ברשימה המקורית .דוגמת ריצה: ?- add_up_list([3,4,7,1,1],X). X = [3,7,14,15,16]. ?- add_up_list([1,2,3,-2,0],X). X= [1,3,6,4,4]. )]?- add_up_list([3,3,3],[3,6,9 true. שאלה 2 כתבו את הפרדיקט complete/2שמקבל רשימה ומספר שלם ,ומחזיר trueאם הרשימה מכילה את כל המספרים מ 0-עד המספר שניתן כקלט .הרשימה לא תהיה מסודרת בסדר מסוים .דוגמת ריצה: ?- complete([0,3,5,2,1,4],3). true. ?- complete([6,1,2,0,4,5,6],6). false. שאלה 3 א .מה תהיה התשובה של פרולוג לשאילתא: ?- X=5, X is X+1, Y is X+2. ב .מה תהיה התשובה של פרולוג לשאילתא: ?- member(X,[1,2,3]),assert(mia(X)),member(X,[3,2,1]),write(X),fail. ג .נתונה התוכנית הבאה: prog([],[]). prog([X],[X]). prog([F,_|T], [F|T1]):- prog(T, T1). מה תהיה התשובה של פרולוג לשאילתא: ?- prog([1,2,3,4,5],R). ד .מה תהיה התשובה של פרולוג לשאילתא: ?- \+ (member(X, [0,1,2])), X=3, !. ה .מה תהיה התשובה של פרולוג לשאילתא: ?- [1,2|3] = [X|Y]. שאלה 4 לפניכם מאגר מידע שמאכסן מידע על הקניות של מספר אנשים .כל קונה מוגדר ע"י שמו הפרטי, התקציב שלו ,ורשימת המוצרים אותם קנה .ברשימת המוצרים של כל אחד מהאנשים נשמרים שם המוצר והכמות בה הוא נקנה .בנוסף ,מאגר המידע מאכסן ברשימה נפרדת את המחיר עבור כל מוצר. הוגדר גם פרדיקט עזר בשם .sum/2 buyer(shira,100,[amount(rice,2),amount(sugar,5)]). buyer(yoram,200,[amount(flour,10),amount(sugar,4)]). buyer(yosef,50,[amount(bread,2)]). buyer(anat,100,[amount(creamcheese,3),amount(milk,4),amount(bread,5)]). buyer(guy,120, [amount(sugar,6),amount(rice,4),amount(flour,5),amount(bread,4),amount(creamcheese,3)]). price(sugar,5). price(rice,10). price(flour,5). price(bread,7). price(milk,6). price(creamcheese,15). sum(Name,Sum):-buyer(Name,_,List),sumList(List,Sum,0). sumList([],Acc,Acc):-!. sumList([H|T],Sum,Acc):-H=amount(Name,A),price(Name,Price),AccN is A*Price+Acc, sumList(T,Sum,AccN). א. ב. ג. ד. ה. כתבו שאילתא שתחזיר את השמות של כל מי שקנה יותר מ 4-יחידות של סוכר .יש להחזיר את כל השמות ברשימה אחת. מה תהיה תוצאת הרצת השאילתא מסעיף א' על מאגר המידע הנתון? מה עושה פרדיקט העזר ?sum כתבו שאילתא שתחזיר את השמות של כל האנשים שקנו בסכום גבוה יותר מסכום התקציב שלהם .יש להחזיר את כל השמות ברשימה אחת. כתבו שאילתא שתחזיר את השמות של כל האנשים שקנו מוצר אחד בלבד ואת שם המוצר .אין להשתמש בפרדיקט .lengthיש להחזיר את כל הנתונים ברשימה אחת ,ולהפריד בין שם האדם ושם המוצר באמצעות נקודתיים (לדוגמה ,במאגר המידע הנתון התשובה צריכה להיות ].)[yosef:bread
© Copyright 2025