diff --git a/day19/d19p2.swift b/day19/d19p2.swift index d55b029..f181af3 100644 --- a/day19/d19p2.swift +++ b/day19/d19p2.swift @@ -1,37 +1,24 @@ import Foundation -enum Color: Character, CustomStringConvertible { - case r = "r" - case g = "g" - case u = "u" - case w = "w" - case b = "b" - var description: String { return String(self.rawValue) } -} +typealias Color = Character func readInput(_ filePath: String) throws -> ([[Color]], [[Color]]) { let content = try String(contentsOfFile: filePath, encoding: .ascii) let lines = content.split(separator: "\n") - let towels = lines[0].split(separator: ", ").map { $0.compactMap(Color.init) } - let patterns = lines[1.. Int { - if pattern.count == 0 { - return 1 - } - if let cached = cache[pattern] { - return cached - } - let r = towels + if let cached = knowns[pattern] { return cached } + knowns[pattern] = towels .filter { pattern.starts(with: $0) } .map { matches(Array(pattern[$0.count..