Menu
Coddy logo textTech

count, all?, any?, none?

Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 24 sur 56.

Quatre petites méthodes Enumerable qui répondent à des questions sur une collection sans vous forcer à écrire une boucle.

count retourne le nombre d'éléments qui satisfont le bloc :

[1, 2, 3, 4, 5].count { |n| n.even? }   # 2
[1, 2, 3, 4, 5].count                    # 5  (pas de bloc, décompte total)

all? est vrai lorsque chaque élément satisfait le bloc :

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

any? est vrai lorsqu'au moins un élément remplit la condition :

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

none? est vrai quand aucun d'entre eux ne le fait :

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

Les méthodes fonctionnent en court-circuit, any? s'arrête à la première correspondance, all? s'arrête au premier échec. Elles sont peu coûteuses.

challenge icon

Défi

Facile

Lisez une liste de scores de test (entiers) séparés par des virgules. Une classe est une valid passing class lorsque :

  • none? des scores n'est négatif (un test non enregistré)
  • all? les scores sont au maximum de 100
  • any? score est exactement de 100 (au moins un score parfait)
  • au moins 3 scores sont >= 70 (utilisez count)

Affichez exactement une ligne :

  • Valid: <count> passing lorsque les quatre conditions sont remplies (count est le nombre de scores >= 70)
  • Invalid sinon

Pour l'entrée 72,80,100,65,90 : 4 scores >= 70, aucun négatif, tous <= 100, l'un est 100, donc la sortie est Valid: 4 passing.

Pour 72,80,90 : 3 scores réussis mais pas de score parfait, donc Invalid.

Aide-mémoire

Quatre méthodes Enumerable qui répondent à des questions sur une collection :

count – renvoie le nombre d'éléments qui satisfont le bloc (ou la taille totale sans bloc) :

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

all? – vrai lorsque chaque élément satisfait le bloc :

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

any? – vrai lorsqu'au moins un élément satisfait le bloc :

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

none? – vrai lorsqu'aucun élément ne satisfait le bloc :

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

Ces méthodes sont à court-circuit : any? s'arrête à la première correspondance, all? s'arrête au premier échec.

Essayez vous-même

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

# À FAIRE : combiner all?, any?, none?, count pour décider Valide vs Invalide
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux