|
@@ -89,16 +89,18 @@ func hike(start *Point, matrix [][]byte, xMax, yMax int, cheat bool, cheats map[
|
|
for len(moves) > 0 {
|
|
for len(moves) > 0 {
|
|
current := moves[0]
|
|
current := moves[0]
|
|
moves = moves[1:]
|
|
moves = moves[1:]
|
|
- if matrix[current.y][current.x] == 'E' && (current.cost <= cost || cheat && current.cost < bestWithoutCheating) {
|
|
|
|
- cost = current.cost
|
|
|
|
- if cheat {
|
|
|
|
- saving := bestWithoutCheating - current.cost
|
|
|
|
- savings[saving]++
|
|
|
|
|
|
+ if matrix[current.y][current.x] == 'E' {
|
|
|
|
+ if current.cost <= cost || cheat && current.cost < bestWithoutCheating {
|
|
|
|
+ cost = current.cost
|
|
|
|
+ if cheat && current.cheatedAt != nil {
|
|
|
|
+ saving := bestWithoutCheating - current.cost
|
|
|
|
+ savings[saving]++
|
|
|
|
|
|
- if current.cheatedAt != nil {
|
|
|
|
cheats[current.cheatedAt.key()] = true
|
|
cheats[current.cheatedAt.key()] = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ continue
|
|
}
|
|
}
|
|
|
|
|
|
newMoves := getMoves(current, matrix, xMax, yMax, cheat, cheats)
|
|
newMoves := getMoves(current, matrix, xMax, yMax, cheat, cheats)
|