Skip to content

Commit d5e2a4e

Browse files
committed
2024.02 - Reduce number of loops for Part 2
1 parent 57263ef commit d5e2a4e

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

2024/2-red-noses/main.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,18 @@ func main() {
1515
scan := bufio.NewScanner(file)
1616
var safeCount int
1717
var secondSafeCount int
18+
var errorIndex int
1819

1920
for scan.Scan() {
2021
row := util.StringToInts(scan.Text(), " ")
2122

22-
if isSafe(row, -1) {
23+
if errorIndex = findErrorIndex(row, -1); errorIndex == -1 {
2324
safeCount++
2425
secondSafeCount++
2526
} 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 {
2830
secondSafeCount++
2931
break
3032
}
@@ -36,7 +38,7 @@ func main() {
3638
fmt.Println(secondSafeCount)
3739
}
3840

39-
func isSafe(row []int, skip int) bool {
41+
func findErrorIndex(row []int, skip int) int {
4042
var diff int
4143
var sign int8
4244

@@ -55,7 +57,7 @@ func isSafe(row []int, skip int) bool {
5557

5658
// Diff bigger than max, unsafe! // direction changed, unsafe!
5759
if diff == 0 || diff > maxDiff || diff < -maxDiff || (diff < 0 && sign == 1) || (diff > 0 && sign == -1) {
58-
return false
60+
return i
5961
}
6062

6163
// Track the direction, for future usage
@@ -68,5 +70,5 @@ func isSafe(row []int, skip int) bool {
6870
}
6971
}
7072

71-
return true
73+
return -1
7274
}

0 commit comments

Comments
 (0)