Menu
Coddy logo textTech

count, all?, any?, none?

Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 24 von 56.

Vier kleine Enumerable-Methoden, die Fragen zu einer Sammlung beantworten, ohne dass man eine Schleife schreiben muss.

count gibt zurück, wie viele Elemente den Block erfüllen:

[1, 2, 3, 4, 5].count { |n| n.even? }   # 2
[1, 2, 3, 4, 5].count                    # 5  (kein Block, Gesamtzahl)

all? ist wahr, wenn jedes Element die Bedingung im Block erfüllt:

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

any? ist wahr, wenn mindestens ein Element die Bedingung erfüllt:

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

none? ist wahr, wenn keines von ihnen die Bedingung erfüllt:

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

Die Methoden nutzen Short-Circuiting, any? stoppt beim ersten Treffer, all? stoppt beim ersten Fehlschlag. Sie sind effizient.

challenge icon

Aufgabe

Einfach

Lies eine kommagetrennte Liste von Testergebnissen (Ganzzahlen) ein. Eine Klasse ist eine valid passing class, wenn:

  • none? der Ergebnisse negativ ist (ein nicht erfasster Test)
  • all? Ergebnisse höchstens 100 sind
  • any? Ergebnis genau 100 ist (mindestens ein perfektes Ergebnis)
  • mindestens 3 Ergebnisse >= 70 sind (verwende count)

Gib genau eine Zeile aus:

  • Valid: <count> passing wenn alle vier Bedingungen erfüllt sind (count ist die Anzahl der Ergebnisse >= 70)
  • Invalid andernfalls

Für die Eingabe 72,80,100,65,90: 4 Ergebnisse >= 70, keines negativ, alle <= 100, eines ist 100, daher ist die Ausgabe Valid: 4 passing.

Für 72,80,90: 3 bestehen, aber kein perfektes Ergebnis, daher Invalid.

Spickzettel

Vier Enumerable-Methoden, die Fragen über eine Collection beantworten:

count – gibt zurück, wie viele Elemente den Block erfüllen (oder die Gesamtgröße ohne Block):

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

all? – true, wenn jedes Element den Block erfüllt:

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

any? – true, wenn mindestens ein Element den Block erfüllt:

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

none? – true, wenn kein Element den Block erfüllt:

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

Diese Methoden verwenden Short-Circuiting: any? stoppt beim ersten Treffer, all? stoppt beim ersten Fehlschlag.

Probier es selbst

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

# TODO: kombiniere all?, any?, none?, count, um über Valid vs Invalid zu entscheiden
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmfluss