Menu
Coddy logo textTech

count, all?, any?, none?

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 24 מתוך 56.

ארבע מתודות Enumerable קטנות שעונות על שאלות לגבי אוסף בלי לאלץ אותך לכתוב לולאה.

count מחזירה את מספר האיברים שעומדים בתנאי של הבלוק:

[1, 2, 3, 4, 5].count { |n| n.even? }   # 2
[1, 2, 3, 4, 5].count                    # 5  (ללא בלוק, הספירה הכוללת)

all? הוא true כאשר כל איבר מקיים את הבלוק:

[2, 4, 6].all? { |n| n.even? }    # true
[2, 4, 7].all? { |n| n.even? }    # false

any? מחזיר true כאשר לפחות אחד מהם מקיים את התנאי:

[1, 2, 3].any? { |n| n.even? }    # true
[1, 3, 5].any? { |n| n.even? }    # false

none? היא true כאשר אף אחד מהם אינו עושה זאת:

[1, 3, 5].none? { |n| n.even? }   # true

המתודות מפסיקות מוקדם: any? נעצרת בהתאמה הראשונה, ו־all? נעצרת בכישלון הראשון. הן יעילות.

challenge icon

אתגר

קל

קרא רשימה של ציוני מבחנים המופרדים בפסיקים (מספרים שלמים). כיתה היא כיתה שעומדת בתנאי מעבר כאשר:

  • none? מהציונים שליליים (מבחן שלא נרשם)
  • כל הציונים הם לכל היותר 100
  • ציון כלשהו הוא בדיוק 100 (לפחות ציון מושלם אחד)
  • לפחות 3 ציונים הם >= 70 (השתמש ב-count)

הדפס שורה אחת בדיוק:

  • Valid: <count> passing כאשר כל ארבעת התנאים מתקיימים (count הוא מספר הציונים שהם >= 70)
  • Invalid אחרת

עבור הקלט 72,80,100,65,90: יש 4 ציונים >= 70, אף אחד מהם אינו שלילי, כולם <= 100, ואחד מהם הוא 100, לכן הפלט הוא Valid: 4 passing.

עבור 72,80,90: יש 3 ציונים עוברים, אך אין ציון מושלם, לכן Invalid.

נסו בעצמכם

scores = gets.chomp.split(",").map(&:to_i)

# TODO: לשלב את all?, any?, none?, count כדי להחליט בין Valid ל-Invalid
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Ruby אונליין