Lưới theo tuần
Thuộc phần Logic và luồng thực thi trong hành trình Swift của Coddy. Bài học 36 trên 56.
Đã đến lúc in lịch ra. Với mỗi thói quen, hãy hiển thị một lưới gồm bảy ký tự, dùng X cho những ngày đã hoàn thành và . cho những ngày còn lại.
// days = [1, 3, 5]
// hiển thị: X.X.X..Mẹo hữu ích: tạo lưới dưới dạng mảng ký tự, rồi chuyển thành String một lần.
var slots = Array(repeating: ".", count: 7)
for d in days {
slots[d - 1] = "X"
}
let row = slots.joined()days bắt đầu từ chỉ số 1 (Thứ Hai = 1), nhưng mảng Swift bắt đầu từ chỉ số 0, nên hãy trừ 1 khi gán. Ngày nằm ngoài phạm vi sẽ gây lỗi, vì vậy hãy tin vào định dạng đầu vào.
Thử thách
Trung bìnhĐọ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. Tạo từ điển như trước, sau đó in mỗi thói quen trên một dòng, sắp xếp theo thứ tự bảng chữ cái, theo định dạng:
<habit> |<grid>| <count>trong đó grid là chuỗi gồm bảy ký tự X/. và count là số ngày hoàn thành duy nhất của thói quen đó.
Với đầu vào read:1,read:3,read:5,workout:2,workout:4, đầu ra là:
read |X.X.X..| 3
workout |.X.X...| 2Tự làm thử
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: tạo bảng gồm 7 ô cho mỗi thói quen; in ra '<name> |<grid>| <count>'
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