Menu
Coddy logo textTech

תצוגה שבועית

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

הגיע הזמן להדפיס את לוח השנה. עבור כל הרגל, הצג רשת בת שבעה תווים עם X בימים שבהם בוצעה הפעולה ו-. בשאר הימים.

// days = [1, 3, 5]
// מציג: X.X.X..

ניב שימושי: בנו את הרשת כמערך של תווים, ואז הפכו אותו ל־String פעם אחת.

var slots = Array(repeating: ".", count: 7)
for d in days {
    slots[d - 1] = "X"
}
let row = slots.joined()

days מתחיל באינדקס 1 (Mon = 1), אבל מערכים ב-Swift מתחילים באינדקס 0, לכן יש להפחית 1 בעת ההשמה. ימים מחוץ לטווח יגרמו לקריסה, לכן סמכו על פורמט הקלט.

challenge icon

אתגר

בינוני

קראו שורת קלט אחת: רשימה מופרדת בפסיקים של רשומות habit:day. בנו את המילון כמו קודם, ואז הדפיסו שורה אחת לכל הרגל (בסדר אלפביתי) בתבנית:

<habit> |<grid>| <count>

כאשר grid היא מחרוזת בת שבעה תווים של X/., ו-count הוא מספר הימים הייחודיים שבהם ההרגל בוצע.

עבור הקלט read:1,read:3,read:5,workout:2,workout:4, הפלט הוא:

read |X.X.X..| 3
workout |.X.X...| 2

נסו בעצמכם

var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")
for op in ops {
    let parts = op.components(separatedBy: ":")
    let day = Int(parts[1])!
    if !(habits[parts[0], default: []].contains(day)) {
        habits[parts[0], default: []].append(day)
    }
}

// TODO: בנה רשת עם 7 משבצות לכל הרגל; הדפס '<name> |<grid>| <count>'
quiz iconבחנו את עצמכם

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

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

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