count, all?, any?, none?
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 24 z 56.
Cztery małe metody Enumerable, które odpowiadają na pytania dotyczące kolekcji, bez zmuszania Cię do pisania pętli.
count zwraca liczbę elementów spełniających warunek bloku:
[1, 2, 3, 4, 5].count { |n| n.even? } # 2
[1, 2, 3, 4, 5].count # 5 (bez bloku, łączna liczba elementów)all? zwraca true, gdy każdy element spełnia warunek bloku:
[2, 4, 6].all? { |n| n.even? } # true
[2, 4, 7].all? { |n| n.even? } # falseany? zwraca wartość true, gdy co najmniej jeden element spełnia warunek:
[1, 2, 3].any? { |n| n.even? } # true
[1, 3, 5].any? { |n| n.even? } # falsenone? ma wartość true, gdy żaden z nich nie spełnia warunku:
[1, 3, 5].none? { |n| n.even? } # trueTe metody kończą działanie wcześniej: any? zatrzymuje się przy pierwszym dopasowaniu, a all? przy pierwszym niepowodzeniu. Są wydajne.
Wyzwanie
ŁatwyWczytaj listę wyników testów (liczb całkowitych) oddzielonych przecinkami. Klasa jest zaliczającą klasą spełniającą warunki, gdy:
none?żaden wynik nie jest ujemny (nieodnotowany test)all?wyniki są co najwyżej równe100any?wynik jest równy dokładnie100(co najmniej jeden wynik maksymalny)- co najmniej 3 wyniki są
>= 70(użyjcount)
Wypisz dokładnie jeden wiersz:
Valid: <count> passing, gdy spełnione są wszystkie cztery warunki (countto liczba wyników>= 70)Invalidw przeciwnym razie
Dla danych wejściowych 72,80,100,65,90: 4 wyniki >= 70, żaden nie jest ujemny, wszystkie są <= 100, jeden wynosi 100, więc wynikiem jest Valid: 4 passing.
Dla 72,80,90: 3 wyniki zaliczające, ale brak wyniku maksymalnego, więc Invalid.
Spróbuj swoich sił
scores = gets.chomp.split(",").map(&:to_i)
# TODO: połącz all?, any?, none? i count, aby zdecydować między Valid a Invalid
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków w szczegółach
Przegląd metod łańcuchów znakówInterpolacja łańcuchów znakówIterowanie po łańcuchach znakówDzielenie i łączeniePowtórka – Tkacz łańcuchów znaków4Bloki, procki i lambdy
Czym jest blok?do..end a nawiasy klamroweSłowo kluczowe yieldParametry blokuProcki i lambdyPodsumowanie — własny iterator7Hashe, część 2
Hash.new z wartościami domyślnymiIterowanie po haszachZagnieżdżone haszeŁączenie i przekształcaniePowtórka — licznik częstotliwości10Projekt – ewidencja uczniów
Przegląd projektuDodawanie ucznia5Potęga Enumerable
Select i RejectŁączenie wywołań mapReduce / Injectcount, all?, any?, none?group_by i partitionsort_by, min_by, max_byPodsumowanie — potok danych8Zaawansowane podejmowanie decyzji
case z klasami i wyrażeniami regularnymiwhen z wieloma wartościamiOperator trójargumentowyInline if / unlessPowtórka – klasyfikator ocenPoćwicz samodzielnie: Kompilator Ruby online