Advent of Code Solutions
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
881 B

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]
}