אף אחד לא פתר את שאלה 33

עמוד
מוצגות 3 תגובות – 16 עד 18 (מתוך 18 סה״כ)
  • מאת
    תגובות
  • #80185
    CodeGuru
    מנהל בפורום

    כותרת: הסבר על כוונת המשורר והצעה
    התוכנית פותרת את בעית שמונה הצריחים (כמה אפשרויות שונות יש לשים שמונה צריחים על לוח שחמט מבלי שאף צריח יאים על צריח אחר) בצורה (מאוד) לא יעילה: עוברת על 2 בחזקת 64 האפשרויות לשים צריחים על הלוח.

    למי שרוצה להריץ את התוכנית מומלץ להקטין את הלוח (נניח 5*5) כדי שזמן הריצה יתקצר להיות ריאלי.

    אתם מוזמנים גם לשפר את התוכנית כך שתפתור את בעיית שמונה המלכות.

    #80186
    אור
    משתתף

    כותרת: גם אני הלכתי בכיוון הזה אבל יש כמה תוספות
    דבר ראשון ככה אתה בודק רק אלכסון מסוג אחד(הרי יש 2 אלכסונים במרובע).
    0001 1000
    0010 0100
    0100 0010
    1000 0001

    (גרסה מוקטנת לצורך הדגמא)

    דבר שני אחרי הפעם הראשונה שתזיז את הביטים הם יתחילו לגלוש לשורות אחרות…

    10000000
    01000000
    00100000
    00010000
    00001000
    00000100
    00000010
    00000001

    אבל אחרי מספר פעמים תגיע למצב הבא:

    00000001
    00000000
    10000000
    01000000
    00100000
    00010000
    00001000
    00000100

    לכן צריך לדאוג למחוק את הביטים הלא רצויים…
    בשביל זה אני השתמשתי בm1 לאחר שהפכתי את הביטים בו עם not
    והוספתי עוד משתנה כמו m1 רק שהוא מתחיל מצידו השני של המספר.
    (0xFF000000000000)

    #80189
    יוני
    משתתף

    כותרת: תגובה לאור:
    כן בדיוק ראיתי את 2 הבעיות האלו:-)
    חוץ מזה יש את הבעיה השלישית – בשונה מהבדיקה הקודמת בעזרת s, כשאתה בודק אלכסונים הבדיקה צריכה להיות "אם אחד הביטים תואם אסור שביט אחר יתאים" ולא "ביט אחד חייב להתאים", כיון שמותר שיהיו אלכסונים ללא מלכות בהם (בשונה מטורים ללא צריחים שלא קיימים) לכן צירפתי את הפונקציה t.

מוצגות 3 תגובות – 16 עד 18 (מתוך 18 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.