This commit is contained in:
Max Nuding 2021-12-05 10:03:08 +01:00
parent 4d88fb7905
commit 951cf5f12c
Signed by: phlaym
GPG Key ID: A06651BAB6777237
2 changed files with 23 additions and 12 deletions

View File

@ -22,20 +22,29 @@ struct Line: CustomStringConvertible {
}
func getCoveredPoints() -> [Point] {
guard isStraight else {
return [Point]()
}
var points = [Point]()
let startX = min(from.x, to.x)
let endX = max(from.x, to.x)
let startY = min(from.y, to.y)
let endY = max(from.y, to.y)
for x in startX...endX {
for y in startY...endY {
points.append(Point(x: x, y: y))
if isStraight {
for x in startX...endX {
for y in startY...endY {
points.append(Point(x: x, y: y))
}
}
} else {
var x = from.x
var y = from.y
let dirX = from.x > to.x ? -1 : 1
let dirY = from.y > to.y ? -1 : 1
while x != to.x {
points.append(Point(x: x, y: y))
x += dirX
y += dirY
}
points.append(to)
}
return points
}
@ -50,8 +59,8 @@ struct Field: CustomStringConvertible {
var coveredPoints = [Point: Int]()
var description: String {
let minX = coveredPoints.min(by: {$0.key.x < $1.key.x})?.key.x ?? 0
let minY = coveredPoints.min(by: {$0.key.y < $1.key.y})?.key.y ?? 0
let minX = 0
let minY = 0
let maxX = coveredPoints.max(by: {$0.key.x < $1.key.x})?.key.x ?? 0
let maxY = coveredPoints.max(by: {$0.key.y < $1.key.y})?.key.y ?? 0
var desc = "Field from \(minX), \(minY) to \(maxX), \(maxY))\n"
@ -80,7 +89,9 @@ struct Day05 {
.filter { !$0.isEmpty }
.compactMap { Line(inputLine: $0) }
run(lines: lines.filter { $0.isStraight })
run(lines: lines)
}
func run(lines: [Line]) {
var field = Field()
//let straightLines = lines.filter { $0.isStraight }
@ -89,7 +100,7 @@ struct Day05 {
field.cover(point: point)
}
}
print(field)
print(field.coveredPoints.filter { $0.value > 1}.count)
//print(field)
print(field.coveredPoints.filter { $0.value > 1 }.count)
}
}

View File

@ -41,7 +41,7 @@ print("Finished in \(execTimeMs)ms")
*/
print("Starting day 05")
let input03 = Bundle.module.path(forResource: "05_test", ofType: ".txt")!
let input03 = Bundle.module.path(forResource: "05", ofType: ".txt")!
let start = CFAbsoluteTimeGetCurrent()
Day05(inputPath: input03).run()
let end = CFAbsoluteTimeGetCurrent()