GammaCyber

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

לינוקס מתקדם CLI

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

T2 · בסיסי200 נק'~15 דק'algorithmic
grep — עם דגלי -v ו--i
ממש grep(lines, pattern, invert=False, ignore_case=False) המחזיר את השורות המכילות את התבנית (התאמת תת-מחרוזת). invert=True (כמו -v) הופך: מחזיר את שאינן מכילות. ignore_case=True (כמו -i) מתעלם מרישיות.
דוגמאות
grep(['apple','banana','grape'], 'ap') → ['apple', 'grape']
grep(['apple','banana'], 'an', invert=True) → ['apple']
פתרון-ייחוס grep — עם דגלי -v ו--i ›
def grep(lines, pattern, invert=False, ignore_case=False): out = [] for ln in lines: hit = (pattern.lower() in ln.lower()) if ignore_case else (pattern in ln) if hit != invert: # -v הופך את התנאי out.append(ln) return out
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני350 נק'~20 דק'algorithmic
awk — סכימת עמודה
ממש awk_sum(lines, col, sep=None) שסוכם את השדה ה-col (מ-1) בכל שורה (כמו awk '{s+=$col}'). sep הוא המפריד (ברירת מחדל: רווחים). דלג על שורות עם פחות מ-col שדות או ששדה היעד אינו מספר. החזר את הסכום.
דוגמאות
awk_sum(['a 10','b 20','c 30'], 2) → 60.0
awk_sum(['x,1','y,2'], 2, ',') → 3.0
פתרון-ייחוס awk — סכימת עמודה ›
def awk_sum(lines, col, sep=None): total = 0 for ln in lines: f = ln.split(sep) if sep else ln.split() if len(f) < col: continue try: total += float(f[col-1]) except ValueError: continue # דלג על שדה לא-מספרי return total
הפתרון נשמר מקומית אוטומטית.