swift-algorithms
advent-of-code
Our great sponsors
swift-algorithms | advent-of-code | |
---|---|---|
26 | 11 | |
5,681 | 1 | |
1.4% | - | |
6.6 | 6.9 | |
7 days ago | 5 months ago | |
Swift | Rust | |
Apache License 2.0 | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
swift-algorithms
-
-โ๏ธ- 2023 Day 11 Solutions -โ๏ธ-
While you are correct about the stdlib, check out swift-algorithms (https://github.com/apple/swift-algorithms). It's written by Apple and has several interesting methods.
-
Do you use algorithms in Swift?
We used Swift Algorithms once or twice. It just depends on the app. I suggest starting with the WWDC video.
-
Checking the largest values in an arrary
Install swift-algorithms and use min/max(count:by:)
-
-๐- 2022 Day 6 Solutions -๐-
#!/usr/bin/env swift sh import Algorithms // https://github.com/apple/swift-algorithms struct StandardInput: Sequence, IteratorProtocol { func next() -> String? { return readLine() } } func markerEnd(for signal: String, markerLength: Int) -> Int { return Array(signal.windows(ofCount: markerLength)) .firstIndex { Set($0).count == markerLength }! + markerLength } let signals = StandardInput().compactMap { $0 } let part1 = signals.map { markerEnd(for: $0, markerLength: 4)}.reduce(0, +) let part2 = signals.map { markerEnd(for: $0, markerLength: 14)}.reduce(0, +) print("part 1 : \(part1)") print("part 2 : \(part2)")
-
-๐- 2022 Day 5 Solutions -๐-
#!/usr/bin/env swift sh import Algorithms // https://github.com/apple/swift-algorithms typealias Label = Character typealias Instruction = (amount: Int, source: Int, destination: Int) struct StandardInput: Sequence, IteratorProtocol { func next() -> String? { return readLine(strippingNewline: false) } } let sections = StandardInput() .compactMap { $0 } .split(separator: "\n") .map { Array($0) } let stacks = parseStacks(from: sections[0]) let instructions = parseInstructions(from: sections[1]) print(apply(instructions, to: stacks, oneAtATime: true)) print(apply(instructions, to: stacks, oneAtATime: false)) // MARK: - Private private func parseStacks(from section: [String]) -> [[Label]] { let crates = section.map { let start = $0.index($0.startIndex, offsetBy: 1) return Array($0.suffix(from: start).striding(by: 4)) } let stackCount = crates[0].count var stacks: [[Label]] = Array(repeating: [Label](), count: stackCount) crates.reversed().forEach { for (index, label) in $0.enumerated() { stacks[index].append(label) } } return stacks.map { $0.filter { $0.isLetter } } } private func parseInstructions(from section: [String]) -> [Instruction] { return section.map { let tokens = $0.dropLast().split(separator: " ") return (Int(tokens[1])!, Int(tokens[3])! - 1, Int(tokens[5])! - 1) } } private func apply( _ instructions: [Instruction], to stacks: [[Label]], oneAtATime: Bool ) -> String { var stacks = stacks instructions.forEach { let cargo = Array(stacks[$0.source].suffix($0.amount)) stacks[$0.source] = stacks[$0.source].dropLast($0.amount) stacks[$0.destination].append( contentsOf: oneAtATime ? cargo.reversed() : cargo ) } return String(stacks.map { $0.last! }) }
-
-๐- 2022 Day 3 Solutions -๐-
Swift. Algorithms contains chunks(ofCount: 3) but I had to write chunks(totalCount:) myself.
-
-๐- 2022 Day 1 Solutions -๐-
Algorithms has `max(count:)` now. ๐ป๐ฅ๏ธ
-
foursum?
Create windows of 4 elements.
-
Understanding algorithms
There is also a swift algorithm package thatโs a precursor to the standard library if you want to examine legit implementation built into Swift.
-
-๐- 2021 Day 1 Solutions -๐-
I used Algorithms and took inspiration from Kotlin with it's zipWithNext function.
advent-of-code
-
-๐- 2022 Day 6 Solutions -๐-
Part 1
-
-๐- 2022 Day 5 Solutions -๐-
Ruby
-
-๐- 2022 Day 3 Solutions -๐-
Rust: PART 1 PART 2
- -๐- 2021 Day 14 Solutions -๐-
- -๐- 2021 Day 9 Solutions -๐-
-
-๐- 2021 Day 7 Solutions -๐-
Ruby: https://github.com/sreedevk/advent-of-code/blob/main/ruby/2021/day7/main.rb
- -๐- 2021 Day 5 Solutions -๐-
- -๐- 2021 Day 4 Solutions -๐-
- -๐- 2021 Day 2 Solutions -๐-
- -๐- 2021 Day 1 Solutions -๐-
What are some alternatives?
v2ray-core - A platform for building proxies to bypass network restrictions.
AdventOfCode2021 - Solutions to all 25 AoC 2021 problems in Rust :crab: Less than 100 lines per day and under 1 second total execution time! :christmas_tree:
swift-evolution - This maintains proposals for changes and user-visible enhancements to the Swift Programming Language.
advent-of-code-2021 - My solutions to advent of code 2021 in deno/TS
SpringBoot-Labs - ไธไธชๆถต็ๅ ญไธชไธๆ ๏ผSpring Boot 2.XใSpring CloudใSpring Cloud AlibabaใDubboใๅๅธๅผๆถๆฏ้ๅใๅๅธๅผไบๅก็ไปๅบใๅธๆ่ๅๅฐๆไธๆ๏ผๅณไธ่งๆฅไธช Star๏ผๆๆฉ 1024
aoc-2021-in-kotlin
swift-numerics - Advanced mathematical types and functions for Swift
advent_of_code - Solutions to programming puzzles on Advent of Code
spring-boot-demo - ๐ไธไธช็จๆฅๆทฑๅ ฅๅญฆไน ๅนถๅฎๆ Spring Boot ็้กน็ฎใ
adventlang - ๐ A programming language (+ code playground) for Advent of Code.
CS-Notes - :books: ๆๆฏ้ข่ฏๅฟ ๅคๅบ็ก็ฅ่ฏใLeetcodeใ่ฎก็ฎๆบๆไฝ็ณป็ปใ่ฎก็ฎๆบ็ฝ็ปใ็ณป็ป่ฎพ่ฎก
adventofcode - Advent of code solutions