Thử thách: FizzBuzz
Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 65 trên 65.
Thử thách
DễTạo một chương trình thực hiện thử thách FizzBuzz kinh điển bằng cấu trúc vòng lặp (loop) và logic điều kiện phù hợp. Thử thách này kiểm tra khả năng kết hợp vòng lặp, câu lệnh điều kiện (conditional statement) và toán tử modulo (modulo operator) để giải một bài toán lập trình quen thuộc.
Nhiệm vụ của bạn:
- Dùng vòng lặp
forđể duyệt các số từ 1 đến 50 (bao gồm cả 1 và 50) - Với mỗi số, áp dụng lần lượt các quy tắc sau:
- Nếu số đó chia hết cho cả 3 và 5, in ra
FizzBuzz - Nếu số đó chỉ chia hết cho 3, in ra
Fizz - Nếu số đó chỉ chia hết cho 5, in ra
Buzz - Nếu số đó không chia hết cho 3 hoặc 5, in chính số đó
- Nếu số đó chia hết cho cả 3 và 5, in ra
- In mỗi kết quả trên một dòng riêng
- Dùng toán tử modulo (
%) để kiểm tra tính chia hết - Sắp xếp các câu lệnh điều kiện bằng
if,else ifvàelsetheo đúng thứ tự
Một vài dòng đầu tiên trong đầu ra của bạn sẽ trông như sau:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzzĐể giải FizzBuzz chính xác, điều quan trọng là bạn phải kiểm tra trường hợp “cả hai điều kiện” (chia hết cho cả 3 và 5) trước, rồi mới kiểm tra từng điều kiện riêng. Một số chia hết cho số khác nếu số dư khi chia cho số đó bằng không.
Chương trình của bạn cần thể hiện cách dùng vòng lặp để lặp qua các lần, toán tử modulo để kiểm tra tính chia hết, và các câu lệnh điều kiện được sắp xếp theo đúng thứ tự logic để xử lý mọi trường hợp có thể xảy ra.
Tự làm thử
void main() {
// TODO: Viết code của bạn bên dưới
// Dùng vòng lặp for để lặp từ 1 đến 50
// Kiểm tra tính chia hết bằng toán tử (operator) chia lấy dư (%)
// Nhớ kiểm tra số chia hết cho cả 3 và 5 trước, rồi mới kiểm tra từng điều kiện (condition) riêng
// In mỗi kết quả trên một dòng riêng
}Tất cả bài học trong Logic và luồng điều khiển
1Thao tác nâng cao với danh sách
Thuộc tính danh sách: đầu và cuốiTrạng thái danh sách: isEmpty và isNotEmpĐảo ngược danh sáchThêm vào danh sách: insertXóa khỏi danh sách: removeWhereTìm trong danh sách: indexOfSắp xếp danh sáchXáo trộn danh sáchÔn tập: trình sắp xếp danh sách4Thao tác nâng cao với Map
Duyệt qua MapKiểm tra khóa và giá trịCác thuộc tính của Map: khóa và giá trịThêm có điều kiện: putIfAbsentXóa mục khỏi MapMap lồng nhauÔn tập: Cập nhật kho hàng2Thao tác hàm trên danh sách
Biến đổi bằng 'map'Lọc bằng 'where'Dùng '.toList()'Kiểm tra điều kiện bằng 'any'Điều kiện với 'every'Tìm phần tử bằng 'firstWhere'Ôn tập: lọc dữ liệu5Dự án: Tính tiền giỏ hàng
Thiết lập dự ánThêm mặt hàng vào giỏ8Dự án: Trình phân tích văn bản đơn giản
Tổng quan và thiết lập dự ánĐếm ký tự3Tập hợp
Tập hợp là gì?Tạo tập hợpThêm và xóa phần tử khỏi tập hợpKiểm tra phần tử trong tập hợpChuyển danh sách thành tập hợpPhép hợp của các tập hợpPhép giao của các tập hợpPhép hiệu của các tập hợpÔn tập: danh sách khách mời không trùng lặpTự luyện tập: Trình biên dịch Dart online