Menu
Coddy logo textTech

קיבוץ ערכים

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

תבנית האינדקס ברירת המחדל היא הבסיס לשתי צורות יומיומיות.

מונה תדירויות: ספירת מספר הפעמים שכל מפתח מופיע.

let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
    counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]

קיבוץ למקטעים: אספו ערכים לפי מפתח נגזר:

let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
    byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]

ברירת המחדל למקרה של קיבוץ היא מערך ריק. הערך default: משמש רק כשהמפתח חסר, ואז הצד הימני משנה את הרשומה במקומה.

challenge icon

אתגר

בינוני

קראו שורת קלט אחת: רשימת מילים המופרדת בפסיקים.

הדפיסו, בסדר הזה:

  1. שורה אחת לכל אורך מילה שמופיע בקלט, מהקצר ביותר לארוך ביותר, בפורמט <length>: <count> כאשר count הוא מספר המילים באורך הזה שהופיעו
  2. Most common length: <n> כאשר n הוא האורך עם מספר ההופעות הגבוה ביותר. במקרה של תיקו, בחרו באורך הקצר יותר.

עבור הקלט hi,hello,yo,hey,bonjour,bye, הפלט הוא:

2: 2
3: 2
5: 1
7: 1
Most common length: 2

(האורכים 2 ו-3 מופיעים שניהם פעמיים. התיקו הוכרע לטובת האורך הקצר יותר, ולכן 2 מנצח.)

נסו בעצמכם

let words = readLine()!.components(separatedBy: ",")

// TODO: ספור מילים לפי אורך; הדפס בסדר ממוין; הדפס את האורך הנפוץ ביותר (במקרה של תיקו: הקצר יותר)
quiz iconבחנו את עצמכם

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

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

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