diff --git a/Sources/AOC2018/AOCDay.swift b/Sources/AOC2018/AOCDay.swift new file mode 100644 index 0000000..ceae44c --- /dev/null +++ b/Sources/AOC2018/AOCDay.swift @@ -0,0 +1,4 @@ +protocol AOCDay { + var tests: (() -> ()) { get set } + var final: (() -> ()) { get set } +} diff --git a/Sources/AOC2018/day-template.swift b/Sources/AOC2018/day-template.swift new file mode 100644 index 0000000..291dad0 --- /dev/null +++ b/Sources/AOC2018/day-template.swift @@ -0,0 +1,22 @@ +// +// Advent of Code 2018 "Day 1: Chronal Calibration" +// + +import Foundation + +class Chronal { +} + +class Day01: AOCDay { + lazy var tests: (() -> ()) = day01Tests + lazy var final: (() -> ()) = day01Final + + func day01Tests() { + } + + func day01Final() { + let retVal = "None" + print("Answer to part 1 is: \(retVal)") + print("Answer to part 2 is: \(retVal)") + } +} diff --git a/Sources/AOC2018/day01.swift b/Sources/AOC2018/day01.swift new file mode 100644 index 0000000..291dad0 --- /dev/null +++ b/Sources/AOC2018/day01.swift @@ -0,0 +1,22 @@ +// +// Advent of Code 2018 "Day 1: Chronal Calibration" +// + +import Foundation + +class Chronal { +} + +class Day01: AOCDay { + lazy var tests: (() -> ()) = day01Tests + lazy var final: (() -> ()) = day01Final + + func day01Tests() { + } + + func day01Final() { + let retVal = "None" + print("Answer to part 1 is: \(retVal)") + print("Answer to part 2 is: \(retVal)") + } +} diff --git a/Sources/AOC2018/main.swift b/Sources/AOC2018/main.swift index f7cf60e..5eebbac 100644 --- a/Sources/AOC2018/main.swift +++ b/Sources/AOC2018/main.swift @@ -1 +1,36 @@ -print("Hello, world!") +// +// Advent of Code 2018 +// + +import Foundation + +let showTests = true +let onlyOneDay = 0 +var allTests: [(() -> ())] = [] +var allFinal: [(() -> ())] = [] + +print("Advent of Code 2018") + +// Compile list of Tests +allTests.append(Day01().tests) + +// Compile list of Answers +allFinal.append(Day01().final) + +if onlyOneDay > 0 { + print("\nDay \(onlyOneDay)") + allTests[onlyOneDay-1]() + allFinal[onlyOneDay-1]() +} else { + if showTests { + for day in 1...allTests.count { + print("\nDay \(day)") + allTests[day-1]() + } + } + + for day in 1...allFinal.count { + print("\nDay \(day)") + allFinal[day-1]() + } +} diff --git a/Sources/AOC2018/tools.swift b/Sources/AOC2018/tools.swift new file mode 100644 index 0000000..44f5a80 --- /dev/null +++ b/Sources/AOC2018/tools.swift @@ -0,0 +1,30 @@ +// +// Tools used for mundane stuff +// + +import Foundation + +// Global function +func XCTAssertEqual(test: String, withExpression isTrue: Bool) { + if (isTrue) { + print("Pass ", terminator: " : ") + } else { + print("* F A I L *", terminator: " : ") + } + print(test) +} + + +struct Tools { + static func readFile(fromPath path: String) -> String { + var retVal = "" + do { + let data = try NSString(contentsOfFile: path, encoding: String.Encoding.ascii.rawValue) + retVal = data as String + } + catch let error as NSError { + print("Tools readFile(fromPath: \"\(path)\") error: \(error)") + } + return retVal + } +} \ No newline at end of file