Menu
CoddyTech

标记为已完成

本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 34 课,共 56 课。

第一个功能:处理一系列“在这一天将这个习惯标记为已完成”的操作,并生成最终状态。

每行输入都是一个操作,格式为 habit:day,其中 day 介于 1 和 7 之间。如果该习惯尚不存在,就为它创建一个空数组,然后追加这一天。如果该习惯已经记录了这一天,不要重复记录。

你会用到字典章节中的默认值模式:无论键是否存在,habits[name, default: []].append(day) 都能正常工作。

challenge icon

挑战

简单

读取一行输入:一个以逗号分隔的 habit:day 条目列表(例如 read:1,read:3,workout:2)。应用每项操作后,按字母顺序打印习惯,每行一个,格式如下:

<habit>: <days_sorted_ascending_joined_with_comma>

跳过重复的 habit:day 对。

对于输入 read:1,read:3,workout:2,read:1,read:5,workout:4,输出为:

read: 1,3,5
workout: 2,4

亲手试试

var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")

// TODO:对每个 op,解析 name:day;如果 day 尚未存在,就添加它;
// 然后按字母顺序输出 habits,并将其中的天数排序
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Swift 在线编辑器