תכנות - שיעור 34
2/April/2006
הצבת מלכות על לוח שחמט
אנו רוצים להציב 8 מלכות על לוח שחמט כך שלא
"תאיימנה" אחת על רעותה. הנה פתרון עבור 5 מלכות על לוח
של
כלומר מלכות במשבצות:
a1 b4 c2 d5 e3
אנו נעדיף את הסימון הבא:
כלומר את המשבצות כזוגות של טור ושורה:
ובפייתון נתאר את קבוצת המשבצות הללו בצורה חסכונית כרשימת השורות:
[0, 3, 1, 4, 2]
שימו לב:
אין צורך לציין את הטור כי הוא נובע מהמקום ברשימה.
נמשיך לדון בבעייה מאוחר יותר. תחילה נקל על עצמנו.
הצבת צריחים
ניתן להציב 3 צריחים על לוח של
כך שלא יהיה ביניהם איום ב-6 הצורות הבאות:
למעשה מדובר ב-6 האפשרויות לסדר בסדרה את
תמורות
(permutations)
ועצרת
(factorial)
נגדיר את פעולת
עצרת
(factorial)
באופן הבא:
לדוגמא:
קל לראות כי
מספר
התמורות
שהן האפשרויות בהן ניתן לסדר
אברים שונים הוא
תרגילים
פתרונות לקודמים
צפו
או
הורידו
פתרון
לתרגיל 2 של שעור קודם.
חדשים
-
סימו (מי שלא סיים) את תרגיל 3, ונסו שוב את תרגיל 5
של שעור קודם.
-
הורידו והריצו את
תכנית הדוגמא מהשעור הקודם.
שנו אותה כך שלכל אדם
(Person)
יצויין ויודפס גם צבע העיניים
(eye_color).
-
כתבו פונקציה
(כמו שכתבנו על הלוח בשיעור)
שמקבלת רשימת מספרים
שמתארים סדרת משבצות על לוח שחמט, בסימון
שלנו
את המשבצות:
ומחזירה מחרוזת של שמות שחמט של המשבצות.
לדוגמא (כמו למעלה): אם הפונציה תקבל
אז היא תחזיר את המחרוזת:
"a1 b4 c2 d5 e3"
חזרה לעמוד האם