התגובות שלי בפורום
-
מאתתגובות
-
אורמשתתף
כותרת: מה בדבר החייאת שורדים שנפסלו?
יש לי רעיון… אולי תאפשרו שתיהיה דרך במקרה שאחד השורדים מת(מאותה קבוצה כמובן) להחיות את השורד…
כמובן זאת לא יכולה להיות סתם פקודה אחת… כי זה לא יהיה הוגן….
אבל אולי תאפשרו את הדבר הבא… שאפשר להחיות שורד אבל זה "יעלה" בבמספר הסיבובים שנחוצים על מנת להעתיק את קוד השורד שוב ללוח…
זה כמובן רק הרעיון הכללי… ואפשר אומנם לשנות אותו ע"י הוספת הגבלות, כמו שמידה והשורד השני עדיין פעיל הפקודה תיחשב כלא חוקית…
או שהקוד לא חייב להיות הקוד המקורי(אבל אולי חייב להיות בגודל של המקורי….)…אורמשתתףכותרת: שאלות ומחשבות…
האם גם השנה לא תהייה הגבלת גיל? (לא יודע אם אני אשתתף בגלל הצבא, אבל אני בהחלט אנסה…)אם יהיו 2 שורדים לקבוצה, האם הם יהיו מופרדים לגמרי, ועל הקבוצה למצוא דרך לתקשר בין השורדים על גבי הזירה?
דבר המעלה רעיון של שורד המחפש מקומות בזירה המשמשים להעברת מידע בין שורדים וכך להשתלט על השורדים
או שאולי המחסנית תיהיה משותפת ואז ניתן להעביר מידע במקום מוגן?מה בכלל לגבי האפשרות שהמחסנית תשאר בין סיבובים?
זה יכול אולי אפילו לתת הזדמנות לשורדים אשר בסיבובים הראשונים ינסו לזהות את "סוג" השורדים האחרים או איזשהו דפוס שעל פיו הם עובדים ולאחר מכן להשתמש באסטרטגיה שתתאים לאותי דפוס התנהגות…בכלל, אולי מאחר ויש 2 שורדים לקבוצה, אולי תעשו את התחרות כקבוצה מול קבוצה (ועדיין יהיו 4 שורדים על הלוח)?
אולי גם אפשר שאם אחד השורדים נכשל אז שני השורדים נהרסים?דרך אגב, לגבי האופקוד המיוחד… איך זה יעבוד בדיוק?
כי נניח ויש שורד שמשתמש בפקודה (כמו בשנה שעברה) call far ופשוט כל פעם קופץ אחורה אל האופקוד המיוחד ואז שוב call far ושוב ושוב…, מהר מאוד קצב הכתיבה שלו יהיה מטורף…
בכמה יגדל זמן המעבד כל פעם? האם יהיה לינארי? האם יש גבול עליון לזמן המעבד?
אולי תדאגו שאפשר לקרוא לאופקוד רק פעם בכל מספר סיבובים, ואחרת הוא נחשב כאופקוד לא חוקי?
או כל דרך אחרת שתגביל את השימוש בו….
או אולי תגדילו את הזירה?בכלל מעניין אותי אם גם השנה ינצח השורד שכותב הכי מהר, ולאו דווקא השורד הכי מתוחכם…
מעניין אם השימוש בשני שורדים יביא לאסטרטגיה מורכבת יותר(תוקף – מגן, מחפש – תוקף, פריסת "גלאים" על הזירה והשורד השני מחפש אחר שינויים וכך למצוא את השורדים…)
או שאולי השימוש העיקרי יהיה בהכפלת קצב הכתיבה/קצב קריאת הפקודות…. או פשוט תקיפה באיזורים שונים…ומאוד מעניין… האם גם הפעם הברווזונים יחזרו וימררו לכולם את החיים???
אורמשתתףכותרת: איך ללמוד אסמבלר…
אני יכול להמליץ לך על ספר ממש טוב(לדעתי) על השפה…
The Art of Assembly
מבלי קשר שהספר עצמו הוא טוב, הוא גם ניתן להורדה בחינם (ועוד בצורה חוקית…) ישר מהאתר של הסופר…
יש כמה גירסאות לספר, ותרגיש חופשי להסתכל על מה שיותר מעניין אותך…אבל אתה לא באמת חייב את הספר בשביל התחרות…(לפחות בנוסח של התחרות שהייתה…)
מספיק לעבור על השורדים לדוגמא, ועל הדוגמאות שנתנו בפורום בשביל להבין את הבסיס…
גם להסתכל בקובץ עזרה של הקומפיילר הוא דבר טוב…
כך תוכל די מהר לעבור על כל הפקודות האפשריות(רק לשים לב שאתה משתמש בפקודות ל16bit ולא הפקודות המתקדמות יותר…).דרך אגב, בתהליך הלמידה אל תשכח שמדובר באימולטור למעבד… ובזירה עצמה אין משמעות להאם פעולה מסויימת היא מהירה או איטית…
גם אם במציאות פקודה אחת יותר מהירה מאחרת (כמו במעבדים מסויימים איפוס ע"י XOR או ע"י MOV)
העיקר שהיא פקודה אחת…אורמשתתףכותרת: 4 שורדים בכל פעם…
לפחות זה מה שהיה פעם קודמת… אני לא יודע מה יהיה השנה…אורמשתתףכותרת: האם זה רמז לכך שבשנה הבא התחרות תיהיה אומנותית?
אורמשתתףכותרת: כן… טעיתי בהצבה ב 18…
אבל אני חושב שהנוסחה בסדר…
ובדקתי את הנכונות של 18 ו 19…
ל 18 עפי הנוסחה mul הוא 15421.
והינה החישוב:
15421*65535=1010615235
השיפט הוא שווה ערך ל חלוקה ב 2^18 כלומר:
1010615235/262144=3855.191173553466796875
מאחר וכאשר מבצעים שיפט לימין המספר המתקבל הוא כבר מעוגל כלפי מטה אז זה באמת שווה ל 3855.
וחישוב רגיל :
65535/17=3855(מומלץ להעביר את החישובים לצד שמאל. על מנת צפייה נכונה..)
אורמשתתףכותרת: מספר פתרונות?
לפי מה שזה ניראה יש מספר פיתרונות לשאלה…
הרי צריך למצוא מספרים Mul ו shift שיתאימו למשוואה הבא בצורה הכי קרובה:
Mul=(2^Shift)/17 +1
בנוסף לתנאי שmul צריך לא להיות גדול מ 65537(מאחר והמספר הגדול ביותר שa יכול להיות הוא 65535)
דבר נוסף הוא שעל מנת שהמשוואה הזאת תיהיה כמה שיותר קרובה לייצוג קרוב במספר שלם צריך לבחור את המספר הכי גדול למרות שאם ההגבלה על גודלו של a לא חייבים לבחור את המספר הכי גדול.
לכן גם המספרים:
18 ו 11421
19 ו 30841
20 ו 61681כמובן שעבור shift נמוך מדי התוצאה לא תיהיה נכונה בגלל אי הדיוק של השלם…
דרך אגב… בתהליך נתקלתי בתופעה מעניינת: כל חזקה של 2 ,שהמעריך שלה הוא בעצמו חזקה של 2, פחות אחת מתחלק ב17 ללא שארית…
אורמשתתףכותרת: ועוד דבר… מתי יפורסמו רישמית שמות הזוכים?
אורמשתתףכותרת: האם הניקוד יחסי או מוחלט?
כלומר האם הפכתם את הציון הגבוהה ביותר ל100 וביחס לזה שאר הציונים?
או שמישהו באמת הצליח לענות הכל נכון?אורמשתתףכותרת: תשובה
לפי הסדר:
2
4
3הגעתי לזה אחרי שדבר הראשון בדקתי באנטרנט מה בדיוק המשמעות של ++ לפני ואחרי המשתנה…
אם הוא בא לפני זאת אומרת שדבר הראשון המשתנה מוגדל באחד ורק אז משתמשים בו.
אם הוא בא אחרי אז זאת אומרת שדבר ראשון משתמשים במשתנה ורק אז מגדילים אותו באחד…
אחרי זה פשוט פירשתי את סדר הפעולות לשלושת שלבים.אורמשתתףכותרת: אתם יכולים אולי להוסיף את הניקוד?
מעניין אותי לראות כמה צמודים היו המקומות…אורמשתתףכותרת: עוד הסבר…
מאחר ובכל תחום של מספר ספרות(אחדות, מאות, אלפים…)
כאשר עוברים לתחום הבא תמיד חייבים לעבור במספר שמתחיל ב1, לעומת מספרים אחרים שלא תמיד עוברים דרכם).
ניתן להראות את זה בכך שלא משנה איזה מספר מכפילים ב2 גם אם הוא הכי גדול לתחום המספר לעולם לא יעבור למספר המתחיל ב2…
999*2=1998…(אני יודע שזאת לא חזקה של 2… רק לצורך הדגמה)
9999*2=19998…
….
לכן בכל תחום תמיד יהיה מספר שיתחיל ב1…
אחדות – 1
עשרות – 16
מאות – 128
… וכו´…אורמשתתףכותרת: אופס… לא שמתי לב…
אורמשתתףכותרת: אחד
כי כל חזקה של 2 בהצגה בינארית תיהיה 1 ושורת אפסים אחריה…
אם הרי הזזה של ביט שמאלה היא כפילה ב2 אז כל חזקה של 2 היא פשוט הזזה של הביט מספר פעמים, וכאשר החזקות של 2 מתחילות ב 1 אז תמיד הסיפרה הכי חשובה (הסיפרה הראשונה) תהייה 1.אורמשתתףכותרת: גם אני הלכתי בכיוון הזה אבל יש כמה תוספות
דבר ראשון ככה אתה בודק רק אלכסון מסוג אחד(הרי יש 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) -
מאתתגובות