day1 part2
This commit is contained in:
@@ -8,28 +8,55 @@ struct day01 {
|
|||||||
.map({ line in
|
.map({ line in
|
||||||
return (Direction(line.first!), Int(line.dropFirst())!)
|
return (Direction(line.first!), Int(line.dropFirst())!)
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static func part1(_ input: [(Direction, Int)]) {
|
static func part1(_ input: [(Direction, Int)]) {
|
||||||
var cur = 50
|
var cur = 50
|
||||||
var count = 0
|
var count = 0
|
||||||
for (dir, num) in input {
|
for (dir, num) in input {
|
||||||
let last = cur
|
|
||||||
cur = switch dir {
|
cur = switch dir {
|
||||||
case .Left: (cur - num) % 100
|
case .Left: (cur - num) % 100
|
||||||
case .Right: (cur + num) % 100
|
case .Right: (cur + num) % 100
|
||||||
}
|
}
|
||||||
if (cur < 0) { cur += 100 }
|
if (cur < 0) { cur += 100 }
|
||||||
print(last, cur, dir, num)
|
|
||||||
if (cur == 0) { count += 1 }
|
if (cur == 0) { count += 1 }
|
||||||
}
|
}
|
||||||
print("Part 1: \(count)")
|
print("Part 1: \(count)")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static func part2(_ input: [(Direction, Int)]) {
|
||||||
|
var cur = 50
|
||||||
|
var count = 0
|
||||||
|
for (dir, num) in input {
|
||||||
|
let start = cur
|
||||||
|
let fullCycles = num - (num % 100)
|
||||||
|
count += fullCycles / 100
|
||||||
|
|
||||||
|
cur = switch dir {
|
||||||
|
case .Left: (cur - num) % 100
|
||||||
|
case .Right: (cur + num) % 100
|
||||||
|
}
|
||||||
|
if (cur < 0) { cur += 100 }
|
||||||
|
|
||||||
|
switch dir {
|
||||||
|
case .Left:
|
||||||
|
if (start - (num % 100)) < 0 && start != 0 {
|
||||||
|
count += 1
|
||||||
|
}
|
||||||
|
case .Right:
|
||||||
|
if (start + (num % 100)) >= 100 && start != 0 && cur != 0 {
|
||||||
|
count += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (cur == 0) { count += 1 }
|
||||||
|
}
|
||||||
|
print("Part 2: \(count)")
|
||||||
|
}
|
||||||
|
|
||||||
static func main() {
|
static func main() {
|
||||||
let parsed = parseInput(realInput)
|
let parsed = parseInput(realInput)
|
||||||
part1(parsed)
|
part1(parsed)
|
||||||
|
part2(parsed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user