Add back Day 1

This commit is contained in:
gareth
2023-12-07 14:53:16 +00:00
parent 011e162b3c
commit 7e3eae9e60
3 changed files with 1086 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
package day01
import (
"regexp"
"strconv"
"strings"
)
func Part1(input string) int {
total := 0
lines := strings.Split(input, "\r\n")
for _, line := range lines {
regex := regexp.MustCompile("[a-zA-Z]")
numbers := regex.ReplaceAllString(line, "")
number := string(numbers[0]) + string(numbers[len(numbers)-1])
i, _ := strconv.Atoi(number)
total += i
}
return total
}
func Part2(input string) int {
values := map[string]string{
"one": "1",
"two": "2",
"three": "3",
"four": "4",
"five": "5",
"six": "6",
"seven": "7",
"eight": "8",
"nine": "9",
}
lines := strings.Split(input, "\r\n")
s := ""
total := 0
for _, line := range lines {
numbers := []string{}
for _, c := range line {
s = s + string(c)
if num, err := strconv.Atoi(string(c)); err == nil {
numbers = append(numbers, strconv.Itoa(num))
s = ""
}
for key, value := range values {
if strings.Contains(s, key) {
numbers = append(numbers, value)
buffer := s[len(s)-1]
s = "" + string(buffer)
}
}
}
number := numbers[0] + numbers[len(numbers)-1]
i, _ := strconv.Atoi(number)
total += i
s = ""
}
return total
}

View File

@@ -0,0 +1,25 @@
package day01
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestPart1(t *testing.T) {
r := Part1(`1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet`)
assert.Equal(t, 142, r)
}
func TestPart2(t *testing.T) {
r := Part2(`two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen`)
assert.Equal(t, 281, r)
}

1000
2023/gareth/day01/input.txt Normal file

File diff suppressed because it is too large Load Diff