תוכנת פרולוג-שאלה דחופה

adiss90

New member
תוכנת פרולוג-שאלה דחופה

איך מפעילים את הרשימות או משו כזה.... תודה מראש
 
[בלי קשר למקורי] פרולוג.

אני חושב שזה קשור למדמ"ח יותר מלשפות תכנות. יש לי בקוד
s(a(X),b(10-X)). s(b(X),a(10-X)).​
נוצרת פה בעיה (שאגב הורסת את SWI editor באופן כזה שצריך להסיר ולהתקין מחדש...) כאשר אני בודק
?- s(a(x),a(10-(10-(10-x)))).​
כיוון שנוצרת רקורסיה אינסופית
a(10-(10-(10-...)))​
איך אני מונע את זה?
 

אמיתי ר

New member
עוד לא למדתי את השפה כולה

אבל מה אתה מנסה לעשות בפועל? מה המשמעות של הביטוי? כי אם התכוונת לבצע חיסור של 10 פחות X, אז זה לא תקין. יצרת מעין "מחזרות" (בשפות תכנות אחרות) של "10-X" כדי לבצע חיסור יש צורך באופרטור: is Z is 10-X
 
כן, לזה הכוונה.

התוכנית המקורית אמורה לעשות כל מיני איטרציות על פונקציות טריגונומטריות עם זהויות, מתוכה בודדתי את החלק הבעייתי (זה אומר במקור ש (sin(a)=cos(90-a ולהפך). כיוון ש-X הוא שם משתנה ולא מספר, אני לא צריך חיסור אריתמטי.
 

johnny d

New member
הגדרות של מרחבים אריתמטיים

בעזרת לוגיקה, היא תחום מאוד מתקדם ומסובך במתמטיקה. אם אתה מעוניין לעבוד עם מספריים טבעיים (או חבורות סופיות) אז תמיד ניתן בפתרון הפשוט של צרץ. http://en.wikipedia.org/wiki/Church_number
 
אני לא רוצה להגדיר מספרים טבעיים,

או מרחבים אריתמטיים, לפחות ככה אני חושב. כל מה שאני רוצה זה שבהנתן אות x, פרדיקט
s(a(x),b(10-x)). s(b(x),a(10-x)).​
אבל שקר ל
s(a(x),a(10-(10-x))). s(b(x),b(10-(10-x))).​
אם זה כרוך במתמטיקה מסובכת מדי, אני אוותר על העניין - אבל קשה לי להאמין שזה המצב.
 

johnny d

New member
לא ניתן להבין מכאן כלום.

אני לא מבין לפחות. אני מניח כי s סגורה לטרנזיטיביות ואמורה להיות שיוויון, מובן לך ש 10-(10-x) זה x. אז אין שום בעיה מהבחינה הזו, הבעיה של התוכנית שלך שהיא נכנסת ללולאה אינסופית, וזה מכיוון שהיא ככל הנראה כתובה (מבחינה קונספטואלית) ל נכון. אם אתה מנסה לכתוב כלי שפותר נוסחאות, אתה צריך לבצע התאמות בין ביטואים ולשמור בסיס מידע של ההתאמות האלו. אם אתה מנסה להסיק נהוג לשמור בסיס נתונים של הסקות. ואם אתה מנסה לכתוב משהו שלא קשור ללימודים או באופן מאוד חזק ללוגיקה מסדר ראשון אז פרולוג זה לא השפה הנכונה.
 
למעלה