Menu
CoddyTech

Đá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.

challenge icon

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,4

Tự 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
quiz iconTự kiểm tra

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

Tự luyện tập: Playground Swift