package adventoc2024 import ( "bufio" "io" ) type Day4 struct{} func (d Day4) Part1(r io.Reader) string { wordsearch := make([][]rune, 0) s := bufio.NewScanner(r) var sum int for s.Scan() { line := []rune(s.Text()) wordsearch = append(wordsearch, line) } search := make([]rune, 4) for startx := range wordsearch { for starty := range wordsearch[startx] { for dx := -1; dx < 2; dx++ { for dy := -1; dy < 2; dy++ { for i := 0; i < 4; i++ { x := startx + dx*i y := starty + dy*i search[i] = runeAt(wordsearch, x, y) } if string(search) == "XMAS" { sum++ } } } } } return printi(sum) } func (d Day4) Part2(r io.Reader) string { return "" } func runeAt(r [][]rune, x, y int) rune { if x >= len(r) || x < 0 { return rune(0) } if y >= len(r[x]) || y < 0 { return rune(0) } return r[x][y] }