Đánh dấu hoàn thành
Thuộc phần Logic và luồng thực thi trong hành trình Swift của Coddy. Bài học 34 trên 56.
Tính năng đầu tiên: xử lý danh sách các thao tác “đánh dấu thói quen này là đã hoàn thành vào ngày này” và tạo ra trạng thái cuối cùng.
Mỗi dòng đầu vào là một thao tác theo định dạng habit:day, trong đó day nằm trong khoảng từ 1 đến 7. Nếu thói quen chưa tồn tại, hãy tạo thói quen đó với một mảng rỗng, sau đó thêm ngày vào mảng. Nếu ngày đó đã được ghi nhận cho thói quen ấy, không ghi nhận ngày đó hai lần.
Bạn sẽ dựa vào mẫu chỉ mục con mặc định trong chương về từ điển: habits[name, default: []].append(day) hoạt động dù khóa có tồn tại hay không.
Thử thách
DễĐọc một dòng đầu vào: danh sách các mục habit:day được phân tách bằng dấu phẩy (ví dụ: read:1,read:3,workout:2). Sau khi áp dụng mọi thao tác, in các thói quen theo thứ tự bảng chữ cái, mỗi thói quen trên một dòng, theo định dạng:
<habit>: <days_sorted_ascending_joined_with_comma>Bỏ qua các cặp habit:day trùng lặp.
Với đầu vào read:1,read:3,workout:2,read:1,read:5,workout:4, đầu ra là:
read: 1,3,5
workout: 2,4Tự làm thử
var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")
// TODO: với mỗi op, phân tích name:day, thêm day nếu chưa có;
// sau đó in ra habits theo thứ tự bảng chữ cái, với các ngày được sắp xếp theo thứ tự tăng dần
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng thực thi
1Chuỗi chuyên sâu
Đếm và chỉ sốChữ hoa, chữ thường và xóa khoảng trắngTìm kiếm trong chuỗiTách và nối chuỗiThay thế chuỗi conÔn tập: Kiểm tra tên người dùng4Tập hợp
Tạo tập hợpPhép hợp và phép giaoPhép trừ và hiệu đối xứngTập con và tập hợp conÔn tập: Bộ lọc thẻ7Dự án: Theo dõi thói quen
Tổng quan dự ánĐánh dấu hoàn thành10Dự án: bộ máy trắc nghiệm
Tổng quan dự ánĐặt câu hỏiTự luyện tập: Playground Swift