perf: use trimLength to reduce recursion

Add trimLength to trim all but the last character of the detected
integers in text form. The last character is not trimmed during
recursion because it may be part of the next integer.

This should reduce the amount of recursion needed to complete the
calculation.
This commit is contained in:
Dan Anglin 2023-12-01 17:21:34 +00:00
parent 7384a04590
commit fcc2ad5666
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638

View file

@ -55,31 +55,40 @@ func calibrationValue(line string, digits []int) int {
return calibrationValue(line[1:], digits)
case strings.HasPrefix(line, one):
digits = append(digits, 1)
return calibrationValue(line[1:], digits)
trimLength := len(one)-1
return calibrationValue(line[trimLength:], digits)
case strings.HasPrefix(line, two):
digits = append(digits, 2)
return calibrationValue(line[1:], digits)
trimLength := len(two)-1
return calibrationValue(line[trimLength:], digits)
case strings.HasPrefix(line, three):
digits = append(digits, 3)
return calibrationValue(line[1:], digits)
trimLength := len(three)-1
return calibrationValue(line[trimLength:], digits)
case strings.HasPrefix(line, four):
digits = append(digits, 4)
return calibrationValue(line[1:], digits)
trimLength := len(four)-1
return calibrationValue(line[trimLength:], digits)
case strings.HasPrefix(line, five):
digits = append(digits, 5)
return calibrationValue(line[1:], digits)
trimLength := len(five)-1
return calibrationValue(line[trimLength:], digits)
case strings.HasPrefix(line, six):
digits = append(digits, 6)
return calibrationValue(line[1:], digits)
trimLength := len(six)-1
return calibrationValue(line[trimLength:], digits)
case strings.HasPrefix(line, seven):
digits = append(digits, 7)
return calibrationValue(line[1:], digits)
trimLength := len(seven)-1
return calibrationValue(line[trimLength:], digits)
case strings.HasPrefix(line, eight):
digits = append(digits, 8)
return calibrationValue(line[1:], digits)
trimLength := len(eight)-1
return calibrationValue(line[trimLength:], digits)
case strings.HasPrefix(line, nine):
digits = append(digits, 9)
return calibrationValue(line[1:], digits)
trimLength := len(nine)-1
return calibrationValue(line[trimLength:], digits)
default:
return calibrationValue(line[1:], digits)
}