GammaCyber

כתיבת קוד — שיעור 48

סדנת למידה מהירה — טכנולוגיה חדשה תחת לחץ זמן

כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.

T5 · שיא800 נק'~15 דק'algorithmic⏱ בונוס-זמן
Security — ניתוח לוג התחברויות
תחת לחץ זמן: נתחו לוג התחברויות. logs היא רשימת שורות 'IP STATUS' (STATUS = FAIL/OK). החזירו את כתובת ה-IP עם הכי הרבה כשלונות (FAIL). שובר-שוויון: הכתובת הקטנה לקסיקוגרפית. אם אין כשלונות — None.
דוגמאות
top_failed_ip(['1.1.1.1 FAIL','1.1.1.1 FAIL','2.2.2.2 FAIL']) → '1.1.1.1'
פתרון-ייחוס Security — ניתוח לוג התחברויות ›
from collections import Counter def top_failed_ip(logs: list) -> str: c = Counter() for ln in logs: ip, status = ln.split() if status == 'FAIL': c[ip] += 1 if not c: return None mx = max(c.values()) return min(ip for ip, v in c.items() if v == mx) # שובר-שוויון: קטן לקסיקוגרפית
הפתרון נשמר מקומית אוטומטית.
T4 · מתקדם550 נק'~10 דק'debug⏱ בונוס-זמן
Debug מהיר — חיפוש בינארי שבור
חיפוש בינארי זה נכנס ללולאה אינסופית על חלק מהקלטים. מצא ותקן את הבאג במהירות (רמז: עדכון הגבול התחתון). מחזיר אינדקס היעד, או -1 אם לא נמצא.
// הקוד השבור לתיקון
def bsearch(a, t): lo, hi = 0, len(a) - 1 while lo <= hi: mid = (lo + hi) // 2 if a[mid] == t: return mid elif a[mid] < t: lo = mid # באג כאן else: hi = mid - 1 return -1
דוגמאות
bsearch([1,3,5,7,9], 7) → 3
bsearch([1,3,5,7,9], 4) → -1
פתרון-ייחוס Debug מהיר — חיפוש בינארי שבור ›
def bsearch(a: list, t: int) -> int: lo, hi = 0, len(a) - 1 while lo <= hi: mid = (lo + hi) // 2 if a[mid] == t: return mid elif a[mid] < t: lo = mid + 1 # התיקון: mid+1 (היה mid -> לולאה אינסופית) else: hi = mid - 1 return -1
הפתרון נשמר מקומית אוטומטית.