Menu
Coddy logo textTech

Filter

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

filter przyjmuje domknięcie predykatowe i zwraca nową tablicę zawierającą tylko te elementy, dla których domknięcie zwróciło true.

let nums = [1, 2, 3, 4, 5, 6]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)                 // [2, 4, 6]

Wynik zachowuje pierwotną kolejność. Typ wyniku jest zgodny z typem wejściowym, nie zachodzi żadna transformacja, następuje jedynie wybór.

filter naturalnie łączy się z map:

let big = nums
    .filter { $0 > 2 }
    .map { $0 * $0 }
print(big)                   // [9, 16, 25, 36]

Czytaj każdy łańcuch od góry do dołu, tak jak potok. Każdy krok tworzy nową tablicę; nic nie modyfikuje oryginału.

challenge icon

Wyzwanie

Łatwy

Wczytaj dwa wiersze danych wejściowych:

  1. Listę liczb całkowitych rozdzielonych przecinkami
  2. Liczbę całkowitą min

Wypisz w osobnych wierszach:

  1. Liczby całkowite ściśle większe od min, połączone za pomocą , (lub pusty wiersz, jeśli żadna liczba nie spełnia warunku)
  2. Kwadraty liczb spełniających warunek, połączone za pomocą ,
  3. Liczbę liczb spełniających warunek

Użyj filter + map jako łańcucha. Nie iteruj dwa razy po danych wejściowych.

Dla danych wejściowych 1,5,2,8,3,7 w wierszu 1 i 4 w wierszu 2 wynikiem jest:

5,8,7
25,64,49
3

Spróbuj swoich sił

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

// TODO: przefiltruj wartości > min jednokrotnie, a potem przekształć je w kwadraty; wypisz obie listy, a następnie ich liczbę
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