diff options
| author | DJ O'Leary <dijitol@proton.me> | 2026-06-26 18:04:09 +0200 |
|---|---|---|
| committer | DJ O'Leary <dijitol@proton.me> | 2026-06-26 18:04:09 +0200 |
| commit | 6d8fb621d1e93b83786890d6d9cb6f0d8defa8ae (patch) | |
| tree | 17c90d3984c114aa023600cc5bec6f6004b02243 /2023/go/internal/day_01 | |
| parent | ad4ea5ca4bc9f7540ee1d6a4fa2d881709dc6459 (diff) | |
refactor!: invert repo directory structure
now is language first
Diffstat (limited to '2023/go/internal/day_01')
| -rw-r--r-- | 2023/go/internal/day_01/day_01.go | 114 | ||||
| -rw-r--r-- | 2023/go/internal/day_01/day_01_test.go | 31 |
2 files changed, 0 insertions, 145 deletions
diff --git a/2023/go/internal/day_01/day_01.go b/2023/go/internal/day_01/day_01.go deleted file mode 100644 index 9cd0a49..0000000 --- a/2023/go/internal/day_01/day_01.go +++ /dev/null @@ -1,114 +0,0 @@ -package day_01 - -import ( - "errors" - "fmt" - "os" - "strconv" - "strings" -) - -func Solve() { - filename := "../_input/day_01.txt" - content := readFile(filename) - - numbers := []int{} - - lines := strings.Split(content, "\n") - for _, line := range lines { - first_num, last_num, err := findNumbers(line) - if err != nil { - continue - } - - num_str := first_num + last_num - num := strToInt(num_str) - numbers = append(numbers, num) - } - - acc := accumulate(numbers) - - fmt.Println(acc) -} - -func readFile(filename string) string { - content, err := os.ReadFile(filename) - if err != nil { - panic(err) - } - - return string(content) -} - -var num_map = map[string]string{ - "zero": "0", - "0": "0", - "one": "1", - "1": "1", - "two": "2", - "2": "2", - "three": "3", - "3": "3", - "four": "4", - "4": "4", - "five": "5", - "5": "5", - "six": "6", - "6": "6", - "seven": "7", - "7": "7", - "eight": "8", - "8": "8", - "nine": "9", - "9": "9", -} - -func findNumbers(line string) (string, string, error) { - if line == "" || line == "\n" { - return "", "", errors.New("Empty line") - } - - found_numbers := []string{} - window_size := 5 - for i := range line { - window_end := i + window_size - if window_end > len(line) { - window_end = len(line) - } - sub_str := line[i:window_end] - - for key, value := range num_map { - if strings.HasPrefix(sub_str, key) { - found_numbers = append(found_numbers, value) - } - } - } - - if len(found_numbers) == 0 { - return "", "", errors.New("No numbers found") - } - - first := found_numbers[0] - last := found_numbers[len(found_numbers)-1] - - return first, last, nil -} - -func accumulate(numbers []int) int { - acc := 0 - - for _, num := range numbers { - acc += num - } - - return acc -} - -func strToInt(str string) int { - num, err := strconv.ParseInt(str, 0, 0) - if err != nil { - panic(err) - } - - return int(num) -} diff --git a/2023/go/internal/day_01/day_01_test.go b/2023/go/internal/day_01/day_01_test.go deleted file mode 100644 index 8063619..0000000 --- a/2023/go/internal/day_01/day_01_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package day_01 - -import ( - "testing" -) - -type input string -type answer string - -func TestFindNumbers(t *testing.T) { - data := map[input]answer{ - "1abc2": "12", - "pqr3stu8vwx": "38", - "a1b2c3d4e5f": "15", - "treb7uchet": "77", - } - - for input, expected := range data { - actual_first, actual_last, err := findNumbers(string(input)) - - if err != nil { - t.Error("find_numbers returned an error") - } - - actual := actual_first + actual_last - - if actual != string(expected) { - t.Errorf("Expected %s, got %s", expected, actual) - } - } -} |
