diff --git a/internal/2017/DayTwo/code.go b/internal/2017/DayTwo/code.go new file mode 100644 index 0000000..18a47c8 --- /dev/null +++ b/internal/2017/DayTwo/code.go @@ -0,0 +1,51 @@ +package daytwo + +import ( + "advent-of-code/internal/registry" + "os" + "strconv" + "strings" +) + +func init() { + registry.Register("2017D2", ParseInput, PartOne, PartTwo) +} + +func ParseInput(filepath string) [][]int { + content, _ := os.ReadFile(filepath) + lines := strings.Split(string(content), "\n") + result := make([][]int, 0, len(lines)) + + for _, line := range lines { + fields := strings.Fields(line) + row := make([]int, 0, len(fields)) + for _, field := range fields { + num, _ := strconv.Atoi(field) + row = append(row, num) + } + result = append(result, row) + } + + return result +} + +func PartOne(data [][]int) int { + sum := 0 + for _, row := range data { + min, max := row[0], row[0] + for _, value := range row[1:] { + if value < min { + min = value + } + if value > max { + max = value + } + } + sum += max - min + } + return sum +} + +func PartTwo(data [][]int) int { + return 0 +}