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 perguntas sobre uma coleção sem forçar 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 cada elemento satisfaz o bloco:

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

any? é verdadeiro quando pelo menos um satisfaz a condição:

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

none? é verdadeiro quando nenhum deles satisfaz a condição:

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

Os métodos realizam 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 pontuações de testes separadas por vírgulas (inteiros). Uma turma é uma valid passing class quando:

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

Imprima exatamente uma linha:

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

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

Para 72,80,90: 3 aprovadas mas nenhuma pontuação perfeita, então Invalid.

Folha de consulta

Quatro métodos Enumerable que respondem a perguntas sobre uma coleção:

count – retorna quantos elementos satisfazem o bloco (ou o tamanho total sem um bloco):

[1, 2, 3, 4, 5].count { |n| n.even? }  # 2
[1, 2, 3, 4, 5].count                   # 5

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

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

any? – verdadeiro quando pelo menos um elemento satisfaz o bloco:

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

none? – verdadeiro quando nenhum elemento satisfaz o bloco:

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

Estes métodos possuem curto-circuito: any? para na primeira correspondência, all? para na primeira falha.

Experimente você mesmo

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

# TODO: combinar 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