2 года назад
Swift Algorithm Club - реализация популярных алгоритмов и структур данных на Swift с подробным объяснением того, как они работают. Цель этого проекта — объяснить, как работают алгоритмы. Основное внимание уделяется ясности и удобочитаемости кода, а не созданию повторно используемой библиотеки, которую вы можете использовать в своих собственных проектах. Тем не менее, большая часть кода готова к использованию в рабочей среде, но вам может потребоваться настроить его, чтобы он вписался в вашу собственную кодовую базу. Код совместим с Xcode 10 и Swift 4.2. Swift Algorithm Club на GitHub: https://github.com/raywenderlich/swift-algorithm-club Платформа: iOS/программирование ⭐️: 26.4K
3 месяца назад
😺️ Swift Algorithms - 5 полезных алгоритмов Swift Algorithms - это Swift Package с полезными алгоритмами для работы с коллекциями, позволяя вам находить комбинации и перестановки, создавать случайную выборку и многое другое. Несмотря на то что это официальный пакет Apple для работы со Swift коллекциями про него мало кто знает и почти никто не использует. В статье, Винсент, предпринял попытку показать удобство использования данного пакета на примере 5 простых алгоритмов: 🟢chunks(ofCount:) - метод позволяет сделать разбивку на страницы. Вы можете использовать его для разделения коллекции на фрагменты заданного размера или на основе предиката. 🟢randomSample() - функция позволяет вам взять случайную выборку из последовательности. Если вам когда-либо приходилось внедрять случайную выборку самостоятельно, вы знаете, как легко ошибочно внести смещение в выборку. Поэтому возможность полагаться на официальную реализацию весьма приветствуется! 🟢indexed() - работает очень похоже на функцию enumerated(), за исключением того, что, в то время как функция enumerated() возвращает увеличивающееся количество элементов, функция indexed() возвращает фактические индексы элементов. Это означает, что вы, в свою очередь, можете безопасно использовать эти индексы для индексации исходной коллекции без риска вызвать сбой во время выполнения. 🟢min(count:), max(count:) - очень полезны, если вам когда-либо понадобится извлечь только N наименьших или наибольших элементов из большой последовательности. 🟢compacted, firstNonNil, uniqued - решают очень простую и распространенную проблему работы с коллекциями, но оттестированы и оптимизированы От себя хочу добавить, очень странно что Apple решили не добавлять Algorithms в свой стандартный набор фреймворков, поставляемых с системой. Как мне кажется, это бы сильно забустило использование этих алгоритмов и улучшило общую стабильность платформы. Может быть в iOS 19 Algorithms станут частью системы, а SwiftUI отдельным пакетом 😌