This commit is contained in:
Max Nuding 2021-12-13 07:44:50 +01:00
parent c4db5fad8d
commit aeb51d7c68
Signed by: phlaym
GPG Key ID: A06651BAB6777237
2 changed files with 14 additions and 51 deletions

View File

@ -105,10 +105,7 @@ let package = Package(
),
.executableTarget(
name: "13",
dependencies: [
.targetItem(name: "Runner", condition: nil),
.product(name: "Collections", package: "swift-collections")
]
dependencies: [ .targetItem(name: "Runner", condition: nil) ]
)
]
)

View File

@ -7,7 +7,6 @@
import Foundation
import Runner
import Collections
struct Coord: Hashable {
var x: Int
@ -46,29 +45,6 @@ struct Coord: Hashable {
return foldingLeft(by: x)
}
}
/*mutating func foldUp(by y: Int) {
guard self.y > y else {
return
}
self.y = y - (self.y - y)
}
mutating func foldLeft(by x: Int) {
guard self.x > x else {
return
}
self.x = x - (self.x - x)
}
mutating func fold(by instruction: FoldingInstruction) {
switch instruction {
case .up(let y):
foldUp(by: y)
case .left(let x):
foldLeft(by: x)
}
}*/
}
@ -91,13 +67,8 @@ enum FoldingInstruction {
}
}
class Field {
var coords = [Coord]()
}
class Day13: Runnable {
let inputPath: String
//var field = [String:Cave]()
required init(inputPath: String) {
self.inputPath = inputPath
@ -107,7 +78,6 @@ class Day13: Runnable {
let input = try! String(contentsOfFile: inputPath)
let parts = input
.trimmingCharacters(in: .newlines)
//.components(separatedBy: .newlines)
.components(separatedBy: "\n\n")
var dots = parts.first!
.components(separatedBy: .newlines)
@ -116,32 +86,28 @@ class Day13: Runnable {
.components(separatedBy: .newlines)
.map { FoldingInstruction(line: $0)! }
//printDots(dots: dots)
//print("")
var isFirst = true
for instruction in instructions {
//dots.forEach { $0.fold(by: instruction) }
dots = dots.map { $0.folding(by: instruction) }
//print(instruction)
//printDots(dots: dots)
if isFirst {
print(Set(dots).count)
//print("")
break
isFirst = false
}
/*print(dots.count)
print(Set(dots).count)
print(parts)*/
}
printDots(dots: dots)
}
func printDots(dots:[Coord]) {
let maxX = dots.map {$0.x}.max()!
let maxY = dots.map {$0.y}.max()!
for x in 0...maxX {
let uniqueDots = Set(dots)
var s = ""
for y in 0...maxY {
print(dots.contains(Coord(x: x, y: y)) ? "#" : ".", terminator: "")
}
print("")
for x in 0...maxX {
s += uniqueDots.contains(Coord(x: x, y: y)) ? "#" : "."
}
s += "\n"
}
print(s)
}
}