תצוגה שבועית
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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 בעת ההשמה. ימים מחוץ לטווח יגרמו לקריסה, לכן סמכו על פורמט הקלט.
אתגר
בינוניקראו שורת קלט אחת: רשימה מופרדת בפסיקים של רשומות 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>'
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
תרגלו בעצמכם: Swift אונליין