Co kupić
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 86 z 86.
Wyzwanie
ŁatwyNapisz funkcję whatToBuy, która przyjmuje itemNames, itemPrices i budget, a zwraca tablicę nazw przedmiotów, które można kupić w ramach budżetu.
Przechodź kolejno przez przedmioty. Dla każdego przedmiotu sprawdź, czy dodanie jego ceny do bieżącej sumy nie spowoduje przekroczenia budżetu. Jeśli nie, dodaj nazwę przedmiotu do listy zakupów i zaktualizuj sumę. Jeśli przedmiot spowodowałby przekroczenie budżetu, pomiń go i sprawdzaj dalej pozostałe przedmioty.
Logika:
- Zacznij od bieżącej sumy wynoszącej
0.0i pustej tablicy wynikowej - Przejdź pętlą przez każdy przedmiot, używając jego indeksu
- Jeśli bieżąca suma plus cena bieżącego przedmiotu jest mniejsza lub równa budżetowi, dodaj nazwę przedmiotu do wyniku i zaktualizuj bieżącą sumę
- Jeśli dodanie przedmiotu spowodowałoby przekroczenie budżetu, pomiń go i przejdź do następnego przedmiotu
- Zwróć tablicę nazw przedmiotów, na które wystarczy pieniędzy
Parametry:
itemNames([String]): Tablica nazw przedmiotówitemPrices([Double]): Tablica odpowiadających im cen (tej samej długości co itemNames)budget(Double): Maksymalna kwota, którą można wydać
Zwraca: Tablicę nazw przedmiotów, na które wystarczy pieniędzy w ramach budżetu, w kolejności, w jakiej występują ([String])
Przykład:
// itemNames: ["Apple", "Bread", "Milk"]
// itemPrices: [2.0, 3.5, 4.0]
// budget: 6.0
// Result: ["Apple", "Bread"]
// (Apple costs 2.0, Bread costs 3.5, total is 5.5 which is within budget)
// (Milk would make total 9.5, which exceeds 6.0, so it's skipped)Spróbuj swoich sił
func whatToBuy(itemNames: [String], itemPrices: [Double], budget: Double) -> [String] {
// Napisz kod tutaj
}
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloPrzypisanie złożonePodsumowanie — prosta matematykaOperatory porównania7Podstawowe wejście/wyjście
Funkcja printInterpolacja ciągów znakówWejście ReadLineKonwersja typówPowtórka – do 120Powtórka – prawda czy fałsz10Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneEtykiety argumentówPowtórka – funkcja SigmaPowtórka – funkcja walidującaWartości domyślne2Zmienne
let vs varAdnotacje typówLiczbyŁańcuch znakówWartość logicznaKonwencje nazewnictwaPodsumowanie – inicjalizacja zmiennych5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka – prosta logikaOperatory logiczne, część 3Operator trójargumentowy8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych wejściowych11FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz3Typy opcjonalne
Czym są typy opcjonalneRozpakowywanie za pomocą if letGuard letOperator nil-coalescingPodsumowanie — bezpieczne rozpakowywanie6Podejmowanie decyzji
Instrukcja ifIf - ElsePowtórka – prosty kalkulatorInstrukcja switchSwitch z zakresami9Pętle
Pętla for-inPętla whilePętla repeat-whileInstrukcja breakInstrukcja continuePowtórzenie – silniaZakresy w pętlachPętla zagnieżdżonaPowtórzenie – dynamiczne dane wejściowePoćwicz samodzielnie: Edytor online Swift