File tree Expand file tree Collapse file tree 1 file changed +8
-6
lines changed Expand file tree Collapse file tree 1 file changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -15,16 +15,18 @@ func main() {
15
15
scan := bufio .NewScanner (file )
16
16
var safeCount int
17
17
var secondSafeCount int
18
+ var errorIndex int
18
19
19
20
for scan .Scan () {
20
21
row := util .StringToInts (scan .Text (), " " )
21
22
22
- if isSafe (row , - 1 ) {
23
+ if errorIndex = findErrorIndex (row , - 1 ); errorIndex == - 1 {
23
24
safeCount ++
24
25
secondSafeCount ++
25
26
} else {
26
- for i := range len (row ) {
27
- if isSafe (row , i ) {
27
+ // Try removing any of the values arround the error index
28
+ for i := range 3 {
29
+ if findErrorIndex (row , errorIndex + 1 - i ) == - 1 {
28
30
secondSafeCount ++
29
31
break
30
32
}
@@ -36,7 +38,7 @@ func main() {
36
38
fmt .Println (secondSafeCount )
37
39
}
38
40
39
- func isSafe (row []int , skip int ) bool {
41
+ func findErrorIndex (row []int , skip int ) int {
40
42
var diff int
41
43
var sign int8
42
44
@@ -55,7 +57,7 @@ func isSafe(row []int, skip int) bool {
55
57
56
58
// Diff bigger than max, unsafe! // direction changed, unsafe!
57
59
if diff == 0 || diff > maxDiff || diff < - maxDiff || (diff < 0 && sign == 1 ) || (diff > 0 && sign == - 1 ) {
58
- return false
60
+ return i
59
61
}
60
62
61
63
// Track the direction, for future usage
@@ -68,5 +70,5 @@ func isSafe(row []int, skip int) bool {
68
70
}
69
71
}
70
72
71
- return true
73
+ return - 1
72
74
}
You can’t perform that action at this time.
0 commit comments