
7 października na GitHubie pojawił się od Apple nowy pakiet algorytmów sekwencjonowania i gromadzenia danych typu open source wraz z powiązanymi typami.
Pakiet Swift-algorithms zawiera szereg potężnych, uogólnionych algorytmów często spotykanych w innych popularnych językach programowania. Twórcy mają nadzieję, że ten nowy pakiet pomoże ludziom opanować zaawansowane algorytmy, zwiększy poprawność i wydajność ich kodu.
Zestaw początkowych algorytmów zawiera operacje sekwencjonowania i zbierania, dzięki którym można przełączać elementy kolekcji, znajdować kombinacje i permutacje, tworzyć losową próbkę i nie tylko.
Pakiet zawiera:
Kombinacje / permutacje
combinations(ofCount:)
Kombinacje elementów o określonej wielkości w kolekcji.permutations(ofCount:)
Permutacje określonego rozmiaru elementów w kolekcji lub całej kolekcji.
Algorytmy mutujące
rotate(toStartAt:)
,rotate(subrange:toStartAt:)
Obrót elementów.stablePartition(by:)
,stablePartition(subrange:by:)
Partycja, która zachowuje względną kolejność wynikowego przedrostka i sufiksu.
Łączenie kolekcji
chained(with:)
Łączy dwie kolekcje z tym samym typem elementu.product(_:_:)
Iteruje po wszystkich parach dwóch kolekcji; odpowiednik zagnieżdżonych pętlifor
–in
cycled()
,cycled(times:)
Powtarza elementy kolekcji w nieskończoność lub określoną liczbę razy.
Operacje zbiorów
randomSample(count:)
,randomSample(count:using:)
Losowo wybiera określoną liczbę elementów z kolekcji.randomStableSample(count:)
,randomStableSample(count:using:)
Losowo wybiera określoną liczbę elementów z kolekcji, zachowując ich pierwotną względną kolejność.uniqued()
,uniqued(on:)
Unikalne elementy kolekcji, z zachowaniem ich kolejności.
Inne przydatne operacje
chunked(by:)
,chunked(on:)
Operacje, które dzielą kolekcję na porcje na podstawie predykatu binarnego lub gdy zmienia się wynik projekcji.indexed()
Iteruj po krotkach indeksów i elementów kolekcji.

Odkąd się zorientował, że istnieje, jest programistą. Programuje, planuje, organizuje, optymalizuje i wdraża. Przeszedł drogę od juniora, przez seniora, team leadera do architekta rozwiązań mobilnych. Współtworzył i nadal tworzy aplikacje mobilne dla największych polskich banków.