הי,
אנחנו ממשיכים עם האתגר של היום השלישי. כשפתרתי את הסידרה הזו בפעם הראשונה האתגר הזה היה המקום הראשון שעצרתי לחשוב. אני מקווה שגם אתם תהנו ממנו. החלקים הקודמים עדיין פעילים אז כדאי לסיים אותם לפני שמגיעים לזה.
@YOEL, @11115, @splintor, @Amirkr, @miryeh
חלק ראשון
אחרי המשך טיול בתוך המחשב אתם פוגשים רכיב זיכרון ניסיוני המבוסס על רשת דו-מימדית של ערכים. הערכים נשמרים ברשת בצורה ספיראלית החל מהמספר 1 ובסדר עולה לדוגמא הערכים הראשונים נראים כך:
17 16 15 14 13
18 5 4 3 12
19 6 1 2 11
20 7 8 9 10
21 22 23---> ...
איך בנינו את זה? דמיינו שהכל ריק ותכתבו באמצע הדף את המספר 1, אחרי זה קחו צעד אחד ימינה וכתבו שם את המספר 2, צעד למעלה ושם 3. ממשיכים צעד אחד שמאלה ושם כותבים 4 אבל עדיין אי אפשר ללכת למטה (כי יש שם את 1) אז ממשיכים עוד צעד שמאלה ושם כותבים 5 ועכשיו הדרך פנויה אז ממשיכים למטה עם 6 ו-7 ואז ממשיכים ימינה ל-8 ואז 9 ואז 10 שאחריו אפשר שוב לעלות למעלה.
והשאלה - מה המרחק בין מספר מסוים X לבין המספר 1 ? מרחק כאן נמדד במספר צעדים שצריך ללכת לכיוון שמאלה, ימינה למעלה או למטה עד שמגיעים.
לדוגמא המספר 9 מרוחק 2 צעדים מהמספר 1: קחו צעד אחד למעלה ואז אחד שמאלה והגעתם.
המספר 12 מרוחק 3 צעדים: קחו שניים שמאלה ואז אחד למטה ואתם שם.
המספר 23 מרוחק רק שני צעדים מ-1: פשוט שני צעדים למעלה ואתם שם.
המספר 1024 מרוחק 31 צעדים מהמספר 1 (אבל את זה כבר לא רואים בציור).
כתבו תוכנית שמקבלת מספר ומדפיסה את המרחק שלו מ-1. אחרי זה לכו לאתר של אריק ונסו אותה על הקלט האישי שלכם כדי לקבל כוכב. זה הקישור לחידה המקורית:
https://adventofcode.com/2017/day/3