כתיבת קוד — שיעור 1
ארכיטקטורת מחשב: איך מחשב באמת עובד
כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T1 · מתחיל
100 נק'
~8 דק'
algorithmic
משקל האמינג — ספירת ביטים דלוקים
כל מספר חי בזיכרון כרצף ביטים. נתון מספר שלם אי-שלילי n. החזר את מספר הביטים הדלוקים (1) בייצוגו הבינארי — 'משקל האמינג'. פתרון יעיל אינו סורק את כל 64 הסיביות אלא מדלג ישירות מביט דלוק אחד לבא אחריו.
דוגמאות
count_set_bits(0) → 0
count_set_bits(7) → 3
count_set_bits(8) → 1
הפתרון נשמר מקומית אוטומטית.
T2 · בסיסי
200 נק'
~20 דק'
algorithmic
מחבר בינארי Ripple-Carry (O(n))
בנה את פעולת החיבור של ה-ALU במו ידיך. נתונות שתי מחרוזות בינאריות a ו-b (תווי '0'/'1' בלבד, אורכים שרירותיים ואולי שונים, אפסים מובילים אפשריים). החזר את סכומן כמחרוזת בינארית ללא אפסים מובילים (פרט ל-"0" עצמו). חובה O(n): קלט של מיליון ביטים חייב לרוץ בזמן. בנייה תמימה שמשרשרת תו בראש המחרוזת בכל צעד היא O(n²) ותיפסל ב-timeout.
דוגמאות
add_binary('1','1') → '10'
add_binary('101','11') → '1000'
add_binary('0','0') → '0'
הפתרון נשמר מקומית אוטומטית.