תכנות
—
שיעור 87
7/May/2009
הצבת מלכות על לוח שחמט
אנו רוצים להציב 8 מלכות על לוח שחמט כך שלא
"תאיימנה" אחת על רעותה. הנה פתרון עבור 5 מלכות על לוח
של
כלומר מלכות במשבצות:
a1 b4 c2 d5 e3
אנו נעדיף את הסימון הבא:
כלומר את המשבצות כזוגות של טור ושורה:
ובפייתון נתאר את קבוצת המשבצות הללו בצורה חסכונית כרשימת השורות:
[0, 3, 1, 4, 2]
שימו לב:
אין צורך לציין את הטור כי הוא נובע מהמקום ברשימה.
נמשיך לדון בבעייה מאוחר יותר. תחילה נקל על עצמנו.
הצבת צריחים
ניתן להציב 3 צריחים על לוח של
כך שלא יהיה ביניהם איום ב-6 הצורות הבאות:
למעשה מדובר ב-6 האפשרויות לסדר בסדרה את
תמורות
(permutations)
ועצרת
(factorial)
נגדיר את פעולת
עצרת
(factorial)
באופן הבא:
לדוגמא:
קל לראות כי
מספר
התמורות
שהן האפשרויות בהן ניתן לסדר
אברים שונים הוא
תרגילים
-
השלם תרגילים קודמים.
-
קרא היטב את הסיכום שלמעלה.
-
כתוב פונקציה
def rows_to_chess_str(rows)
שמקבלת רשימת מספרים
שמתארים סדרת משבצות על לוח שחמט, בסימון
שלנו
את המשבצות:
ומחזירה מחרוזת של שמות שחמט של המשבצות עם רוחים בינהן.
לדוגמא (כמו למעלה): אם הפונציה תקבל
אז היא תחזיר את המחרוזת:
"a1 b4 c2 d5 e3"
חזרה לעמוד האם