Menu
Coddy logo textTech

count, all?, any?, none?

Часть раздела Логика и управление потоком путешествия по Ruby на Coddy. Урок 24 из 56.

Четыре небольших метода Enumerable, которые отвечают на вопросы о коллекции, избавляя тебя от необходимости писать цикл.

count возвращает количество элементов, удовлетворяющих блоку:

[1, 2, 3, 4, 5].count { |n| n.even? }   # 2
[1, 2, 3, 4, 5].count                    # 5  (без блока, общее количество)

all? имеет значение true, когда каждый элемент удовлетворяет блоку:

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

any? имеет значение true, когда это выполняется хотя бы для одного элемента:

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

none? имеет значение true, когда ни один из них этого не делает:

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

Методы используют короткое замыкание: any? останавливается при первом совпадении, а all? — при первой неудаче. Они экономичны.

challenge icon

Задание

Легко

Прочитайте разделённый запятыми список результатов тестов (целых чисел). Класс является valid passing class, когда:

  • none? из scores не являются отрицательными (не записанный тест)
  • все scores не превышают 100 (all?)
  • какой-либо score равен ровно 100 (any?) (как минимум один идеальный результат)
  • как минимум 3 scores равны >= 70 (используйте count)

Выведите ровно одну строку:

  • Valid: <count> passing, когда выполняются все четыре условия (count — это количество scores, равных >= 70)
  • Invalid в противном случае

Для ввода 72,80,100,65,90: 4 scores >= 70, ни один не является отрицательным, все <= 100, один равен 100, поэтому выводом будет Valid: 4 passing.

Для 72,80,90: 3 passing, но нет идеального результата, поэтому Invalid.

Попробуйте сами

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

# TODO: скомбинируйте all?, any?, none?, count, чтобы определить Valid vs Invalid
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Ruby