count, all?, any?, none?
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 24 di 56.
Quattro piccoli metodi Enumerable che rispondono a domande su una raccolta senza costringerti a scrivere un ciclo.
count restituisce il numero di elementi che soddisfano il blocco:
[1, 2, 3, 4, 5].count { |n| n.even? } # 2
[1, 2, 3, 4, 5].count # 5 (senza blocco, conteggio totale)all? è true quando ogni elemento soddisfa il blocco:
[2, 4, 6].all? { |n| n.even? } # true
[2, 4, 7].all? { |n| n.even? } # falseany? è true quando almeno uno lo è:
[1, 2, 3].any? { |n| n.even? } # true
[1, 3, 5].any? { |n| n.even? } # falsenone? è true quando nessuno di loro lo fa:
[1, 3, 5].none? { |n| n.even? } # trueI metodi terminano in anticipo: any? si ferma alla prima corrispondenza, all? si ferma al primo errore. Sono economici.
Sfida
FacileLeggi un elenco di punteggi dei test separati da virgole (numeri interi). Una classe è una classe promossa valida quando:
none?dei punteggi è negativo (un test non registrato)all?i punteggi sono al massimo100any?punteggio è esattamente100(almeno un punteggio perfetto)- almeno 3 punteggi sono
>= 70(usacount)
Stampa esattamente una riga:
Valid: <count> passingquando tutte e quattro le condizioni sono soddisfatte (countè il numero di punteggi>= 70)Invalidaltrimenti
Per l'input 72,80,100,65,90: 4 punteggi >= 70, nessuno negativo, tutti <= 100, uno è 100, quindi l'output è Valid: 4 passing.
Per 72,80,90: 3 promossi ma nessun punteggio perfetto, quindi Invalid.
Provalo tu
scores = gets.chomp.split(",").map(&:to_i)
# TODO: combina all?, any?, none? e count per decidere tra Valid e Invalid
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di datiEsercitati da solo: Compilatore Ruby online