Phobia קוד מקור

עמוד
מוצגות 15 תגובות – 1 עד 15 (מתוך 18 סה״כ)
  • מאת
    תגובות
  • #76751
    kirill578
    משתתף

    אז למי שמעוניין לראות איך פוביה הוביל, לפני שכולם עלו עלינו מוזמן להסתכל פה:

    https://github.com/kirill578/phobia_codeguru9

    לקוד קיימות שלוש גירסות שונות, הגירסה השניה כנראה הטובה ביותר, אך נהצלנו להוריד את רוב הקוד בהרצה אחרונה כדי להימנע מהתקפה חכמה (מה שלא ממש עזר)

    השתדל להוסיף במהשך סבר בויקי

    #77913
    Idan Dor
    משתתף

    שלום קיריל, רציתי לשאול מה אתם עושים עם הזומבים לאחר
    שהישתלטם עליהם.

    בנסוף לגבי ה "~" שיש לכם בתחילת השם, הבנתי שהוא נותן
    לכם להיות מיד אחרי הזומבים אבל לא יותר יעיל להיות

    0000phobia

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

    עידן דור

    קבוצת קנגורו

    #77911
    kirill578
    משתתף

    אחרי שהשטלטנו על הזומבים, הם מגבים את החלק הלולאה של הבדיקה שבא אנחנו רצים רוב הזמן, ואז כותבים אותה כל הזמן בחזרה, הדבר מונע מוות כאשר כותבים עלינו בצורה אנחית.
    כאשר הזומבי השני שנפס מגן על שאר הזומבים באותה צורה שאנחנו מגנים על עצמינו

    לגבי הטילדה בשם, זה מאפשר לנו לרוץ ראשונים בכל סיבוב. הסיבה לכך היא לא בגלל שאנחנו מרווחים אופקוד נוסף אלה שאנחנו רצים מייד אחרי הזומבים. (הזומבים תמיד יהיו אחרונים).

    כאשר אנחנו רצים אחרי הזומבים וכותבים לנו כל הקוד, הזומבים יתקנו לנו את הקוד רגע לפני שאנחנו מריצים אותו.

    שים לב שבמידה ואתה רוצה להריץ את הקוד חיבים להריץ עם עוד 3 קבוצות של שורדים, כך שהסגמנט שהמשותף של הזומבים יהיה 2500

    #77910
    Idan Dor
    משתתף
    Quote:
    שים לב שבמידה ואתה רוצה להריץ את הקוד חיבים להריץ עם עוד 3 קבוצות של שורדים, כך שהסגמנט שהמשותף של הזומבים יהיה 2500

    אוקיי זה מסביר למה זה היה נראה לי שאתם סתם הורגים אותם.
    תודה רבה

    #77908
    ddt
    משתתף

    בשעות האחרונות אני מנסה לכתוב את השורד הראשון שלי.

    אפשר לדעת מה המשפט הבא אומר:
    "זה מאפשר לנו לרוץ ראשונים בכל סיבוב. הסיבה לכך היא לא בגלל שאנחנו מרווחים אופקוד נוסף אלה שאנחנו רצים מייד אחרי הזומבים. (הזומבים תמיד יהיו אחרונים"
    אם הזומבים תמיד יהיו אחרונים? איך אתם רצים מייד אחרי הזומבים? איך אתם רצים תמיד ראשונים בכל סיבוב וגם רצים מייד אחרי הזומבים?
    איפה בקוד של המנוע יש את קטע הקוד שמאפשר לכם לעשות את זה?
    מה סדר הריצה של השורדים והזומבים בתחרות?

    "כאשר אנחנו רצים אחרי הזומבים וכותבים לנו כל הקוד, הזומבים יתקנו לנו את הקוד רגע לפני שאנחנו מריצים אותו. "
    איזה קוד שלכם הזומבים מתקנים? איך הם עושים את זה?
    האם כל הזומבים מתקנים אותו הדבר או כל אחד מתקן משהו אחר?

    " הדבר מונע מוות כאשר כותבים עלינו בצורה אנחית"
    איך עושים דבר כזה? למה זה קורה?

    "שים לב שבמידה ואתה רוצה להריץ את הקוד חיבים להריץ עם עוד 3 קבוצות של שורדים, כך שהסגמנט שהמשותף של הזומבים יהיה 2500"
    לא הבנתי בכלל את המשפט הזה – אפשר להסביר למה התכוונתם כאן?
    גם על איזה קוד מדובר? של איזה שורד או זומבי?
    איך עושים את החישוב של 2500?

    #77895
    ddt
    משתתף

    מי שכתב את השורד הזה יכול לענות?
    אני עדיין לא מבין מה הוא עושה שם

    #77892
    kirill578
    משתתף

    אם הזומבים תמיד יהיו אחרונים?
    כן

    איך אתם רצים מייד אחרי הזומבים?
    אנחנו רצים ראשונים בכל סיבוב, והזומבים אחרונים. כך שאף אחד לא רץ בינינו

    איך אתם רצים תמיד ראשונים בכל סיבוב וגם רצים מייד אחרי הזומבים?
    אחרי השורד האחרון רץ הראשון

    איפה בקוד של המנוע יש את קטע הקוד שמאפשר לכם לעשות את זה?
    הנה קטע הקוד שמסדר את השורדים לפני סדר האלף ב', כמובן שטילדה היא לפנות האות a
    https://github.com/kirill578/corewars8086/blob/master/corewars8086/src/il/co/codeguru/corewars8086/war/WarriorRepository.java#L79

    מה סדר הריצה של השורדים והזומבים בתחרות?
    לפי סדר האלפבת, ואז הזומבים

    איזה קוד שלכם הזומבים מתקנים? איך הם עושים את זה?
    בשלב האתחול של הזומבים הם מגבים אצלם באזור הפרטי את תוכל הלולאה ואת קוד הבירחה שלנו. לאחר שלב ההתחול הזומבים מעתיקים את הקוד המגובה למקום בו אנחנו רצים. כל הזומבים מתקנים את אותו קוד, אך במרווח של כמה כתובות בודדות.

    האם כל הזומבים מתקנים אותו הדבר או כל אחד מתקן משהו אחר?
    כל הזומבים חוץ מהזומבי השני מתקנים, הזמבי השני מגן על הזומבים, כאשר הזומבי השני יזה התקרבות לקוד של הזומבים הוא יעתיק את הקוד למקום אחר ויקפיץ את כל הזומבים למקום החדש

    איך עושים דבר כזה? למה זה קורה?
    כאשר מישהו כותב לנו על הקוד, הזומבים שרצים לפנינו יתקנו את הפגם בקוד לפני שאנחנו נריץ אותו

    לא הבנתי בכלל את המשפט הזה – אפשר להסביר למה התכוונתם כאן?
    כאשר המנוע מכין את הזירה הוא מקציב אזורי זיכרון עבור כל השורדים, כאשר כל קטע זיכרון בא לאחר הקטע הקודם. אם תסתכל על הקוד של הזומבים, תראה שהוא לא משמר את הקוד של הסיגמנט המשותף שלהם.
    אבל במידה ומריצים 4 קבוצות שורדים שבכל אחת יש 2 שורדים. אז אזור הפרטי של הזומבים יהיה 2500
    במידה ותנסה להריץ את את השורד ללא עוד 3 קבוצות כל הזומבים ימותו כי הם ינסו לכתובת 2500 שהי הינה הזיכרון הפרטי במיקרה אחר

    גם על איזה קוד מדובר? של איזה שורד או זומבי?
    השאלה לא ברורה

    איך עושים את החישוב של 2500?
    פשוט תריץ את המנוע עם עוד 4 קבוצות ותראה מה הערך של האזור הפרטי של הזומבים (בעזרת הדיבגר)

    #77887
    ddt
    משתתף

    לאחר שאתם משתלטים על הזומבים האם אתם משנים את הקוד שלהם כדי שיעשו משהו אחר?
    איזה חלק מכל הקוד של הזומבים אתם משתלטים עליו?

    ראיתי שבאתר כתבו "הסדר בו ישחקו השורדים בכל סיבוב נקבע בתחילת המשחק באופן אקראי, ואינו משתנה במהלכו."
    איך זה מסתדר עם מה שאתה כתבת ש:
    "אנחנו רצים ראשונים בכל סיבוב, והזומבים אחרונים. כך שאף אחד לא רץ בינינו "
    אז זה בג במנוע של התחרות שמישהו אמור לתקן ולא יופיע בתחרות הבאה?

    ולגבי הזומבים של השנה – היו שישה כאלו
    האם כל הזומבים עושים אותו הדבר או שיש להם תפקיד שונה
    או שמה שרשמת "כל הזומבים חוץ מהזומבי השני מתקנים, הזמבי השני מגן על הזומבים, כאשר הזומבי השני יזה התקרבות לקוד של הזומבים הוא יעתיק את הקוד למקום אחר ויקפיץ את כל הזומבים למקום החדש "
    זה כבר אחרי שהשתלטם עליהם
    זה יפה מאוד מה שעשיתם איתם שהם עושים לכם גיבוי כזה

    מי זכה בתחרות של השנה? מצאתי את השורדים אבל לא ראיתי איפה רשמו

    #77884
    CodeGuru
    מנהל בפורום

    תודה על התזכורת – עדכנו את הזוכים באתר
    http://codeguru.co.il/Xtreme/winners.htm
    אם פספסנו משהו (איות של שם, בית ספר או משהו אחר) אנא ספרו לנו ונתקן.

    #77883
    kirill578
    משתתף

    לאחר שאתם משתלטים על הזומבים האם אתם משנים את הקוד שלהם כדי שיעשו משהו אחר?
    לאחר שאנחנו מגלים את מיקום הזומבים אנחנו מקפיצים אותם לקוד שלנו

    איזה חלק מכל הקוד של הזומבים אתם משתלטים עליו?
    מחליפים את הפקודה האחרונה של הקפיצה לקפיצה אבסולוטית, למקום בוא כל הזומבים שלנו רצים

    ראיתי שבאתר כתבו "הסדר בו ישחקו השורדים בכל סיבוב נקבע בתחילת המשחק באופן אקראי, ואינו משתנה במהלכו."
    איך זה מסתדר עם מה שאתה כתבת ש:
    "אנחנו רצים ראשונים בכל סיבוב, והזומבים אחרונים. כך שאף אחד לא רץ בינינו "


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

    ולגבי הזומבים של השנה – היו שישה כאלו
    האם כל הזומבים עושים אותו הדבר או שיש להם תפקיד שונה
    —-
    הם עושים כמעט אותו הדבר, כל אחד מהם רושם את השארית בחילוק של הכתובת שלו עם המספר המופיע בכתובת
    0cXdeh
    כאשר איקס הוא המספר של הזומבי
    ואת התוצאה של החילוק ניתן למצוא לאחר מספר דפקי שעון בכתובת
    0cXddh
    כאשר איקס הוא שוב המספר של הזומבי.

    #77877
    ddt
    משתתף

    איפה רואים בקוד שהזומבים רצים אחרי השורדים?
    הייתי שמח לקבל את השורה המדויקת כמו שרשמת למעלה
    ואיזה תו הוא תמיד יהיה הכי ראשון?
    אני מניח שטילדה כי זה מה ששמו בשם של מי שרצה לנצל את הבג הזה נכון?
    או כמה טילדות כדי להיות לפני מישהו ששם טילדה
    או הרבה טילדות כדי להיות לפני מישהו ששם כמה טילדות

    #77875
    kirill578
    משתתף

    איפה רואים בקוד שהזומבים רצים אחרי השורדים?
    הייתי שמח לקבל את השורה המדויקת כמו שרשמת למעלה


    הזומבים נטענים אחרי השורדים למערך, סדר הרצת השורדים הוא כסדר המערך
    https://github.com/kirill578/corewars8086/blob/master/corewars8086/src/il/co/codeguru/corewars8086/war/WarriorRepository.java#L109

    ואיזה תו הוא תמיד יהיה הכי ראשון?
    השווה בין מחרוזות בג'ווה מתבצעת ע"י השווה בין ארכי היוניקוד, הערך הכי נמוך של תו ביוניקוד שניתן להדפיס הוא 21 אקסה
    שזה סימן קריאה!

    אני מניח שטילדה כי זה מה ששמו בשם של מי שרצה לנצל את הבג הזה נכון?
    כן, אבל בהרצה הסופית לא הייתה לה משמעות כי הרצנו ללא הקוד של הזומבים
    התילדה הכפולה הייתה לבדוק אם השורד ששלחנו התקבל (בדיקה ויזואלית שהשם באמת מתחיל בשני תילדות)

    או כמה טילדות כדי להיות לפני מישהו ששם טילדה
    או הרבה טילדות כדי להיות לפני מישהו ששם כמה טילדות

    עדיף לתקן את הבאג ולסגור את הסיפור

    #77871
    CodeGuru
    מנהל בפורום

    כמו שקיריל אמר – הכי פשוט לתקן את המנוע כך שיבחר סדר הרצה מקרי בכל פעם.
    באותה הזדמנות אפשר גם להפוך את סדר ריצת התחרות למקרי כדי למנוע את היתרון הזמני שניתן לשמות הראשונים בכך שהם מורצים קודם; כך גם אפשר יהיה להריץ בלא חשש אלף ריצות ובכל נקודה שנעצור את הריצה היא תהיה הוגנת.

    מי מתנדב להרים את הכפפה ולהציע לדני תיקון למנוע?

    #77870
    Idan Dor
    משתתף

    האם סדר ההרצה המקרי יהיה מקרי לחלוטין או שבאותה קבוצה תמיד שורד מספר 1 יהיה לפני 2 כי אם זה לא ישמר המון שורדים מהעבר ישברו ויהיה יותר מסובך לתקשר בין השורדים באותה קבוצה…
    בכל מקרה צריך להחליט תושבה לשאלה זו

    #77865
    ddt
    משתתף

    לגבי מה שקבוצת CGX רשמו
    באותה הזדמנות אפשר גם להפוך את סדר ריצת התחרות למקרי
    לא הבנתי
    יש שתי בעיות של מקריות שצריך לתקן?

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