[TASK] Solved part 1
This commit is contained in:
79
day01/day01.go
Normal file
79
day01/day01.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package day01
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
func Part1(input string) uint {
|
||||
lines := strings.Split(input, "\n")
|
||||
sum := uint(0)
|
||||
for i := 0; i < len(lines); i++ {
|
||||
line := lines[i]
|
||||
for j := 0; j < len(line); j++ {
|
||||
if unicode.IsNumber(rune(line[j])) {
|
||||
sum = sum + uint(line[j]-'0')*10
|
||||
break
|
||||
}
|
||||
}
|
||||
for j := len(line) - 1; j >= 0; j-- {
|
||||
if unicode.IsNumber(rune(line[j])) {
|
||||
sum = sum + uint(line[j]-'0')
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sum
|
||||
}
|
||||
|
||||
func Part2(input string) uint {
|
||||
lines := strings.Split(input, "\n")
|
||||
sum := uint(0)
|
||||
for i := 0; i < len(lines); i++ {
|
||||
line := lines[i]
|
||||
for j := 0; j < len(line); j++ {
|
||||
n, found := writtenNumberAt(line, j)
|
||||
if found {
|
||||
sum = sum + n*10
|
||||
break
|
||||
}
|
||||
}
|
||||
for j := len(line) - 1; j >= 0; j-- {
|
||||
n, found := writtenNumberAt(line, j)
|
||||
if found {
|
||||
sum = sum + n
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sum
|
||||
}
|
||||
|
||||
func writtenNumberAt(line string, i int) (n uint, found bool) {
|
||||
|
||||
if unicode.IsNumber(rune(line[i])) {
|
||||
return uint(line[i] - '0'), true
|
||||
} else if strings.HasPrefix(line[i:], "one") {
|
||||
return 1, true
|
||||
} else if strings.HasPrefix(line[i:], "two") {
|
||||
return 2, true
|
||||
} else if strings.HasPrefix(line[i:], "three") {
|
||||
return 3, true
|
||||
} else if strings.HasPrefix(line[i:], "four") {
|
||||
return 4, true
|
||||
} else if strings.HasPrefix(line[i:], "five") {
|
||||
return 5, true
|
||||
} else if strings.HasPrefix(line[i:], "six") {
|
||||
return 6, true
|
||||
} else if strings.HasPrefix(line[i:], "seven") {
|
||||
return 7, true
|
||||
} else if strings.HasPrefix(line[i:], "eight") {
|
||||
return 8, true
|
||||
} else if strings.HasPrefix(line[i:], "nine") {
|
||||
return 9, true
|
||||
} else {
|
||||
return 0, false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user