Stan zapasów
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 55 z 56.
Raport o stanie magazynowym, który wykorzystuje hasze, łańcuchy Enumerable, group_by i odrobinę formatowania.
Wyzwanie
ŚredniPodano tablicę inventory. Każdy element to hash z polami :name, :category, :qty i :price.
Wypisz cztery wiersze:
- Łączną wartość wszystkich pozycji w magazynie (
qty * price, zsumowane), jako liczbę całkowitą. - Kategorię z największą liczbą pozycji, w formacie
Top category: <name> (<count>). W przypadku remisu rozstrzyga alfabetyczna kolejność nazw kategorii. - Nazwy pozycji niedostępnych w magazynie (
qty == 0), posortowane alfabetycznie i połączone za pomocą,. Jeśli nie ma żadnych, wypisz(none). - Nazwy 3 najdroższych pozycji według ceny jednostkowej, od najdroższej, połączone za pomocą
,. W przypadku remisu rozstrzyga alfabetyczna kolejność nazw.
Dla domyślnej zawartości magazynu wynik to:
232
Top category: food (3)
milk
chair, lamp, milkSpróbuj swoich sił
inventory = [
{ name: "apple", category: "food", qty: 10, price: 2 },
{ name: "bread", category: "food", qty: 4, price: 3 },
{ name: "milk", category: "food", qty: 0, price: 4 },
{ name: "chair", category: "furniture", qty: 2, price: 35 },
{ name: "lamp", category: "furniture", qty: 5, price: 20 },
{ name: "pencil", category: "stationery", qty: 30, price: 1 }
]
# TODO: wypisz łączną wartość, kategorię o najwyższej wartości, nazwy produktów niedostępnych w magazynie oraz 3 najdroższe produkty
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