כיצד להסיר כפילויות ב-Prolog

פרולוג היא שפת תכנות הצהרתית בשימוש נפוץ במחקר בינה מלאכותית ובלשנות. בניגוד לשפות הפרוצדורליות הנפוצות יותר, רוב תוכניות פרולוג מוגדרות כסדרה של כללים ומשוואות, ולא כסדרה של שלבים. הקוד הבא מתאר את התהליך להסרת כפילויות מרשימה ב-Prolog.

שלב 2

הקלד את הקוד בין הלוכסים (משאיר את הלוכסים עצמם בחוץ):

/ % remove_dups(+List, -NewList): % רשימה חדשה קשורה לרשימה, אך עם פריטים כפולים הוסרו. remove_dups([], []).

remove_dups([First | Rest], NewRest) :- חבר (First, Rest), remove_dups (Rest, NewRest).

remove_dups([First | Rest], [First | NewRest]) :- לא (חבר (First, Rest)), remove_dups (Rest, NewRest). /

הפונקציה "remove_dups" מוגדרת כסדרה של שלושה כללים. הכלל הראשון ("remove_dups([],[].)") מציין שאם הרשימה ריקה, אין לעשות דבר; הפונקציה צריכה פשוט לחזור. הכלל השני מציין שאם הפריט הראשון ברשימה מופיע במקום אחר ברשימה, יש להסיר אותו (מכיוון שזהו שכפול) והעיבוד צריך להמשיך להשתמש בשאר הרשימה על ידי קריאה לפונקציה remove_dups שוב עם הפריט הראשון ברשימה עזוב. הכלל הסופי מציין שאם החבר הראשון ברשימה אינו נוכח במקום אחר ברשימה, יש לשמור אותו ולהמשיך בעיבוד.

Techwalla עשויה לזכות בפיצוי באמצעות קישורי שותפים בסיפור הזה.