Menu
Coddy logo textTech

count, all?, any?, none?

Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy. Lição 24 de 56.

Quatro pequenos métodos Enumerable que respondem a perguntas sobre uma coleção sem obrigar você a escrever um loop.

count retorna quantos elementos satisfazem o bloco:

[1, 2, 3, 4, 5].count { |n| n.even? }   # 2
[1, 2, 3, 4, 5].count                    # 5  (sem bloco, contagem total)

all? é verdadeiro quando todos os elementos satisfazem o bloco:

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

any? é verdadeiro quando pelo menos um deles faz isso:

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

none? é verdadeiro quando nenhum deles faz isso:

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

Os métodos fazem curto-circuito: any? para na primeira correspondência, all? para na primeira falha. Eles são baratos.

challenge icon

Desafio

Fácil

Leia uma lista de notas de testes (inteiros) separadas por vírgulas. Uma turma é uma turma válida e aprovada quando:

  • none? das notas é negativa (um teste não registrado)
  • all? as notas são no máximo 100
  • any? nota é exatamente 100 (pelo menos uma nota máxima)
  • pelo menos 3 notas são >= 70 (use count)

Imprima exatamente uma linha:

  • Valid: <count> passing quando as quatro condições forem atendidas (count é a quantidade de notas >= 70)
  • Invalid caso contrário

Para a entrada 72,80,100,65,90: 4 notas >= 70, nenhuma negativa, todas <= 100, uma é 100, então a saída é Valid: 4 passing.

Para 72,80,90: 3 aprovadas, mas nenhuma nota máxima, então Invalid.

Experimente você mesmo

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

# TODO: combine all?, any?, none?, count para decidir Válido vs Inválido
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de Ruby online