Reorganised packages
This commit is contained in:
76
Sources/01/01.swift
Normal file
76
Sources/01/01.swift
Normal file
@ -0,0 +1,76 @@
|
||||
//
|
||||
// File.swift
|
||||
//
|
||||
//
|
||||
// Created by Max Nuding on 01.12.21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Runner
|
||||
|
||||
struct Day01: Runnable {
|
||||
let inputPath: String
|
||||
|
||||
|
||||
func run() {
|
||||
let input = try! String(contentsOfFile: inputPath)
|
||||
let distances = input
|
||||
.components(separatedBy: .newlines)
|
||||
.compactMap { Int($0) }
|
||||
runA(distances: distances)
|
||||
runB(distances: distances)
|
||||
}
|
||||
func runA(distances: [Int]) {
|
||||
let measurements = distances.reduce((currentCount: 0, lastValue: Int.max)) { partialResult, currentValue in
|
||||
let increaseBy = currentValue > partialResult.lastValue ? 1 : 0
|
||||
return (currentCount: partialResult.currentCount + increaseBy, lastValue: currentValue)
|
||||
}
|
||||
print(measurements.currentCount)
|
||||
}
|
||||
|
||||
func runB(distances: [Int]) {
|
||||
|
||||
// Sliding window would've been better, but I was too tired to bend reduce to my will. Oh well!
|
||||
var arrA = [Int]()
|
||||
var arrB = [Int]()
|
||||
var arrC = [Int]()
|
||||
var sumA = Int.max
|
||||
var sumB = Int.max
|
||||
var sumC = Int.max
|
||||
var increases = 0
|
||||
|
||||
for (idx, distance) in distances.enumerated() {
|
||||
arrA.append(distance)
|
||||
if idx == 0 {
|
||||
continue
|
||||
}
|
||||
arrB.append(distance)
|
||||
if idx == 1 {
|
||||
continue
|
||||
}
|
||||
arrC.append(distance)
|
||||
if arrA.count == 3 {
|
||||
sumA = arrA.reduce(0, +)
|
||||
arrA = [Int]()
|
||||
if sumA > sumC {
|
||||
increases += 1
|
||||
}
|
||||
}
|
||||
if arrB.count == 3 {
|
||||
sumB = arrB.reduce(0, +)
|
||||
arrB = [Int]()
|
||||
if sumB > sumA {
|
||||
increases += 1
|
||||
}
|
||||
}
|
||||
if arrC.count == 3 {
|
||||
sumC = arrC.reduce(0, +)
|
||||
arrC = [Int]()
|
||||
if sumC > sumB {
|
||||
increases += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
print(increases)
|
||||
}
|
||||
}
|
11
Sources/01/main.swift
Normal file
11
Sources/01/main.swift
Normal file
@ -0,0 +1,11 @@
|
||||
//
|
||||
// File.swift
|
||||
//
|
||||
//
|
||||
// Created by Max Nuding on 05.12.21.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Runner
|
||||
|
||||
Runner(target: Day01.self, day: "01").run()
|
Reference in New Issue
Block a user