Menu
Coddy logo textTech

Reduce

Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 25 z 56.

reduce sprowadza całą tablicę do jednej wartości. Dzięki niemu możesz sumować, mnożyć, znajdować wartość skrajną lub tworzyć nowy ciąg znaków albo tablicę z wielu elementów.

let total = [1, 2, 3, 4].reduce(0) { acc, n in acc + n }
print(total)                       // 10

Pierwszym argumentem jest początkowy akumulator. Domknięcie otrzymuje bieżący akumulator i następny element, a następnie zwraca nowy akumulator. Końcowa wartość akumulatora jest wynikiem.

W przypadku operatorów arytmetycznych Swift umożliwia stosowanie skróconego zapisu opartego na symbolach:

[1, 2, 3, 4].reduce(0, +)              // 10
[1, 2, 3, 4].reduce(1, *)              // 24

reduce nie musi zwracać liczby. Akumulator może być dowolnego typu — to Ty decydujesz:

let sentence = ["hi", "there"].reduce("") { $0 + $1 + "!" }
print(sentence)                    // "hi!there!"
challenge icon

Wyzwanie

Łatwy

Odczytaj jeden wiersz wejścia: rozdzieloną przecinkami listę liczb całkowitych. Używając reduce dla każdego z nich, wypisz trzy wiersze:

  1. Sumę
  2. Iloczyn
  3. Największą wartość (użyj domknięcia, które zwraca większy z dwóch argumentów, nie wywołuj .max())

Załóż, że jest co najmniej jeden element. Aby znaleźć największą wartość, możesz użyć nums[0] jako początkowego akumulatora i zredukować pozostałą część tablicy.

Dla wejścia 3,7,2,8,4 wynikiem jest:

24
1344
8

Spróbuj swoich sił

let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: oblicz sumę, iloczyn i maksimum za pomocą reduce
quiz iconSprawdź się

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

Poćwicz samodzielnie: Edytor online Swift