התגובות שלי בפורום
-
מאתתגובות
-
Sonמשתתף
(כמובן, באותו נושא, מה דעתכם שtillEnd יהיה פרמטר של הConstructor ולא פרמטר של הפונקציות שהן מעבירות עוד ועוד פנימה?)
Sonמשתתףקודם כל, אני מסיר בפניכם את הכובע. שיפרתם את המנוע ונתתם את השיפורים במתנה לקהילה, וזה שם אתכם במקום יותר מכובד ממני לא משנה מה אגיד.
יש כמה דברים שראיתי כשעברתי על הקוד שלכם שאולי יעשו אותו קריא יותר ונוח יותר לעבודה, בעתיד, אז אם בא לכם אתם מוזמנים להשתמש בהצעות שלי ואם לא – תגידו לי לשתוק, כי אחרי הכל אתם עושים עבודה ואני רק מבקר אותה:
* לא לגמרי הבנתי איך או למה עובד כל העניין עם הרנדום בבינום. ממליץ לתעד יותר טוב את הרציונל מאחורי זה בשביל אנשים כמוני. לחלופין, אם הבנתי נכון הכוונה בזה היא לערבב, נכון – אז למה לא פשוט להפריד לגמרי את הערבוב, בתור משהו שקורה רק רגע לפני הרצה של תחרות (להוסיף ערבוב של הרשימה ממש בתוך הפונקציה runWar)? אפשר להשתמש בערבוב רגיל של java, שנקרא Collection.shuffle אם אני זוכר נכון.
* קראתי פעם שכל פעם שמישהו כותב פונקציה עם פרמטר בוליאני מה שהוא מתכוון זה שתי פונקציות שאחת עוטפת את השנייה. נראה לי שבמקרה הזה זה נכון – יכול להיות שאתם רוצים פונקציה אחת
string runCompetition(
ושנייה
void runAndSaveCompetition(
שמריצה את הראשונה ואז שומרת את התוצאות?בכל מקרה, הרבה כבוד! תודה!
Sonמשתתףהעזרה שלהם די מועילה וזה משהו שמאד כדאי ללמוד.
Sonמשתתףקשה לי לשמוע את המילים "עבודה מסודרת" במשפט שלא מכיל את המילים "source control".
אז הנה.
בפרט, הפתרון הנכון הוא שכל שורד יהיה בתיקייה בgit עם הערה בהתחלה שמסבירה את הרציונל וכו'.
Sonמשתתףהאמת שזו שאלה שכדאי לשאול את צוות ריידן לו ריד.
תגידו, לפני שהתחלתם לכתוב סקריפטים עבור התחרות של השנה, מה ידעתם על ג'אווה? פייתון?
כמה הייתם צריכים כל אחד מהם?
איך התמודדתם עם דברים שלא ידעתם?
ובכלל, אם אתם כבר כאן, מה דעתכם על הטיפים שלי? השתתפתם יותר פעמים ממני
Sonמשתתףאתה מתכנת. עבודה שחורה נטו זה דבר שאתה צריך לא לעשות. תתרגל מחדש
התשובה לשאלה עצמה מאד מגוונת. כמו שכבר אמרתי בכמה פתילים אחרים לאחרונה, רוב התשובה הוא "מפשילים את השרוולים, נכנסים לזה, ולא יוצאים עד שמנצחים איכשהו".
בפרט במקרה הזה זה כנראה יכלול קצת תכנות בג'אווה (לא באמת צריך לדעת איך, פשוט עושים ניסוי וטעייה) וכמות בינונית של תכנות ברובי או פייתון או משהו בסגנון.
קשה לי להסביר איך עושים אוטומציה בפוסט אחד. אני מעביר על זה קורסים של שבועיים. עודד הציע לתת קורס כזה בתור פרס בתחרות הקרובה, אני לא יודע אם זה רעיון טוב כי אני כבר לא נער ולא יודע מה נערים רוצים היום (אני רציתי עבודה) ואף אחד לא עונה לפתיל שבו שאלתי (רמז רמז ).
Sonמשתתףסקריפט זה להחליף עבודה ידנית בעבודה של מחשב.
בהרבה מקרים זה עושה אותך שמח יותר כי אתה לא צריך לעשות דברים משעממים.
בגלל שמחשב עובד הרבה יותר מהר מבן אדם, ובגלל שמחשב לא אוכל וישן ומשתעמם, לפעמים זה מאפשר לך לעשות דברים שאחרת פשוט לא היית עושה. או כי לא היה לך זמן עד התחרות, או כי לא היית עומד בללחוץ על אותם שלושה כפתורים במשך 80 שעות.
דוגמה ממש פשוטה:
יש לך שורד, והרגע שיפרת אותו. זאת אומרת, שינית אותו, צריך לבדוק כדי לראות אם זה שיפור.
לבדוק זה אומר לקמפל, להעתיק לתיקייה של המשחק, לפתוח את המשחק, לכתוב "10" בשדה של "כמה משחקים", ללחוץ על הכפתור, לחכות קצת, ולהסתכל בגרף, ואז להזכר איך היה נראה הגרף קודם ולהחליט אם הגרף הפעם יותר טוב.
כמה זמן זה היה חוסך אם היית יכול ללחוץ על קיצור מקשים שהיה עושה את כל זה, נכון? בינתיים במקום להתעסק בזה היית יכול להמשיך לחשוב על רעיונות לשורדים.
ורגע… בעצם, אתה יכול אפילו שזה לא ידרוש קיצור מקשים! מתכנתים היום עובדים עם "רמזור" כזה שמריץ ברקע כל פעם שהם שומרים את הקובץ את כל התהליך הזה, ובסוף מצייר אדום אם יש שגיאת קמפול, צהוב אם זה פחות טוב מאשר לפני ה"שיפור" כביכול וירוק אם זה באמת היה שיפור. זה פשוט נמצא שם בתחתית המסך ואתה יכול להעיף מבט ולוודא שאתה עדיין מתקדם בכיוון הנכון. כמה זמן זה חוסך, וכמה מאמץ…
ואפשר אפילו יותר טוב! אם כבר מי שעושה את הבדיקה זה מחשב ולא אתה, וזה לא מציק לך, אז למה להסתפק בבדיקה אחת? תריץ את זה בלחיצת כפתו נגד *השורדים של כל תחרות קודגורו*! ככה תוכל לראות אם אתה מקבל ציון טוב כי אתה טוב, או אם אתה מקבל ציון טוב פשוט כי בין השורדים שבחרת לבדוק את עצמך נגדם יש כמה שחלשים נגדך, ואתה יכול לראות מהר תכונות של השורד שלך – מה החוזקות שלו, מה החולשות שלו, ועוד.
זה נותן לך המון מידע שעוזר לך לבנות שורדים טובים יותר, בלי לעלות לך זמן! אולי צריך לחכות קצת, אבל לא נורא – תריץ את זה ברקע בזמן שאתה עובד על שורד אחר, ואחרי רבע שעה תחזור לחלון של זה ותראה מה הייתה התוצאה.
ואפשר להמשיך ולהמשיך. הרעיון הוא כל הזמן לעבוד, וכל פעם שאתה שם לב שאתה עושה משהו משעמם, או נמנע מלעשות משהו רק כי הוא משעמם, להוסיף לסקריפטים שלך פיצ'ר שעושה אותו, ואחרי שאתה עושה את זה במשך זמן מה יש לך סקריפטים שעושים אותך מכונת עבודה משוגעת.
היה מובן?
Sonמשתתףהאמת שבזמנו זה לא ממש עזר לי.
הדרך הטובה להתכונן, בטווח הארוך, היא לתכנת פרויקטים מאתגרים בכל מיני שפות.
בטווח הקצר, שווה ללמוד קצת מידענות (הטיפ שמעלה אותך ליגה: "תחשוב איזה מילים יופיעו בדף שאתה מחפש וחפש אותן")
Sonמשתתףוהתשובה האחת על כל השאלות האלה יחד – הצוות שלימדתי לקח פרסים שנתיים ברצף בזכות דבר אחד בלבד: הם ישבו לפני התחרות וקראו את כל השורדים של שנים שעברו וכתבו שורדים משלהם שעובדים באותן דרכים כדי לוודא שהם באמת מבינים.
Sonמשתתףהעצה הכי טובה שלמדתי בחיים:
כל אחד מהדברים האלה היית יכול פשוט לנסות ולראות מה קורה. אם כל פעם שיהיה לך רעיון כזה תנסה אותו ואז תספר לפורום אם הוא עבד או לא, תלמד מזה כל כך הרבה כל כך מהר שדי מהר תהיה בליגה אחרת לגמרי.
Sonמשתתףכשאנחנו כתבנו דיבאגר, התחלנו בלי לדעת כלום על ג'אווה או על איך הקוד שלו כתוב.
פשוט ניסינו וגילינו שזה מאד לא קשה אם מתעקשים.
בהצלחה! שלח לקיריל pull request כשאתה מסיים ואז לכולם יהיה
Sonמשתתףoops…
I got the idea, anyway… you told me the solution in a PM so I won't write it here – it isn't mine anyway
Sonמשתתףנכון. הייתי צריך להקשיב למורה שלי למתמטיקה כשהוא דיבר על זה שהזויות צריכות להיות מול הצלעות:
בנו משולש שצלעותיו x, 2x, 4x.
קל לבנות משולש כזה אז לא אפרט.
כעת בנו משולש שצלעותיו 2x, 4x, 8x.
הם יהיו דומים (הוכחה דרך הפרופורציה ביניהם, 2:1)
ולכן כל זויותיהם יהיו זהות.הם יחלקו את הצלעות 2x, 4x אבל לא את השלישית.
בעעע… ליישר לימין.
Sonמשתתףממש ממש
משעמם
לכם
Sonמשתתףאני ערפד שונא שום, אבל נדמה לי שחמש.
-
מאתתגובות