Menu
CoddyTech

count, all?, any?, none?

Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 24 trên 56.

Bốn phương thức Enumerable nhỏ giúp trả lời các câu hỏi về một tập hợp mà không cần viết vòng lặp.

count trả về số phần tử thỏa mãn khối lệnh:

[1, 2, 3, 4, 5].count { |n| n.even? }   # 2
[1, 2, 3, 4, 5].count                    # 5  (không có khối lệnh, tổng số phần tử)

all? có giá trị true khi mọi phần tử thỏa mãn khối lệnh:

[2, 4, 6].all? { |n| n.even? }    # true
[2, 4, 7].all? { |n| n.even? }    # false

any? trả về true khi có ít nhất một phần tử thỏa mãn:

[1, 2, 3].any? { |n| n.even? }    # true
[1, 3, 5].any? { |n| n.even? }    # false

none? trả về true khi không có phần tử nào thỏa mãn:

[1, 3, 5].none? { |n| n.even? }   # true

Các phương thức này dừng sớm: any? dừng ở kết quả khớp đầu tiên, all? dừng ở trường hợp không đạt đầu tiên. Chúng ít tốn tài nguyên.

challenge icon

Thử thách

Dễ

Đọc một danh sách điểm kiểm tra gồm các số nguyên, phân tách bằng dấu phẩy. Một lớp đạt yêu cầu khi:

  • none? không có điểm nào âm (bài kiểm tra chưa được ghi nhận)
  • all? mọi điểm đều không quá 100
  • any? có điểm đúng bằng 100 (ít nhất một điểm tuyệt đối)
  • ít nhất 3 điểm >= 70 (dùng count)

In chính xác một dòng:

  • Valid: <count> passing khi cả bốn điều kiện đều thỏa mãn (count là số điểm >= 70)
  • Invalid trong các trường hợp khác

Với đầu vào 72,80,100,65,90: có 4 điểm >= 70, không có điểm âm, mọi điểm đều <= 100, có một điểm bằng 100, nên đầu ra là Valid: 4 passing.

Với 72,80,90: có 3 điểm đạt yêu cầu nhưng không có điểm tuyệt đối, nên kết quả là Invalid.

Tự làm thử

scores = gets.chomp.split(",").map(&:to_i)

# TODO: kết hợp all?, any?, none?, count để quyết định Valid hay Invalid
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 xử lý

Tự luyện tập: Trình biên dịch Ruby online