summaryrefslogtreecommitdiff
path: root/2023/go/internal/day_03/part_01/part_01.go
diff options
context:
space:
mode:
authorDJ O'Leary <dijitol@proton.me>2026-06-26 18:04:09 +0200
committerDJ O'Leary <dijitol@proton.me>2026-06-26 18:04:09 +0200
commit6d8fb621d1e93b83786890d6d9cb6f0d8defa8ae (patch)
tree17c90d3984c114aa023600cc5bec6f6004b02243 /2023/go/internal/day_03/part_01/part_01.go
parentad4ea5ca4bc9f7540ee1d6a4fa2d881709dc6459 (diff)
refactor!: invert repo directory structure
now is language first
Diffstat (limited to '2023/go/internal/day_03/part_01/part_01.go')
-rw-r--r--2023/go/internal/day_03/part_01/part_01.go123
1 files changed, 0 insertions, 123 deletions
diff --git a/2023/go/internal/day_03/part_01/part_01.go b/2023/go/internal/day_03/part_01/part_01.go
deleted file mode 100644
index 49837b3..0000000
--- a/2023/go/internal/day_03/part_01/part_01.go
+++ /dev/null
@@ -1,123 +0,0 @@
-package part_01
-
-/**
- * TRIED:
- * 530923
- */
-
-import (
- "os"
- "strconv"
- "strings"
-)
-
-const USE_SAMPLE = true
-
-func Solve() {
- var content []byte
- if USE_SAMPLE {
- content, _ = os.ReadFile("../_input/day_03_part_01_sample.txt")
- } else {
- content, _ = os.ReadFile("../_input/day_03.txt")
- }
- lines := strings.Split(string(content), "\n")
-
- validNumbers := walkLines(lines)
-
- answer := 0
- for _, number := range validNumbers {
- answer += number
- }
-
- println(answer)
-}
-
-func walkLines(lines []string) []int {
- var validNumbers []int
-
- for y := 0; y < len(lines); y++ {
- line := lines[y]
-
- if line == "" || line == "\n" {
- continue
- }
-
- // Counts as a symbol...
- filteredLine := strings.ReplaceAll(line, "\r", "")
-
- previousWasNumber := false
- number := ""
- for x := 0; x < len(filteredLine); x++ {
- char := filteredLine[x]
-
- _, err := strconv.Atoi(string(char))
- isNumeric := err == nil
-
- if isNumeric {
- previousWasNumber = true
- number += string(char)
- continue
- }
-
- if !previousWasNumber {
- continue
- }
-
- isValid := checkValidity(lines, x, y, len(number))
- if isValid {
- num, _ := strconv.Atoi(number)
- validNumbers = append(validNumbers, num)
- }
-
- println(number)
-
- previousWasNumber = false
- number = ""
- }
- }
-
- return validNumbers
-}
-
-// N = number
-// k = numOfDigits + 1
-// (x-k,y-1) (x-1,y-1) ( x ,y-1)
-// (x-k, y ) N ( x , y )
-// (x-k,y+1) (x-1,y+1) ( x ,y+1)
-func checkValidity(lines []string, x int, y int, numOfDigits int) bool {
-
- for i := max(y-1, 0); i <= y+1; i++ {
-
- var debugLine string
-
- for j := max(x-(numOfDigits+1), 0); j <= x; j++ {
-
- if lineExists := len(lines) > i; !lineExists {
- continue
- }
-
- if charExists := len(lines[i]) > j; !charExists {
- continue
- }
-
- char := rune(lines[i][j])
- debugLine += string(char)
-
- if char == '.' {
- continue
- }
-
- _, err := strconv.Atoi(string(char))
- isNumeric := err == nil
- if isNumeric {
- continue
- }
-
- debugLine = "" //nolint:ineffassign // Only used for debugging and needs to be reset
-
- return true
- }
- }
-
- return false
-}