Browse Source

add and solve day 4 part 2

master
Alexander Avery 3 weeks ago
parent
commit
98da66dc99
  1. 46
      2024/day04.go
  2. 12
      2024/puzzle_test.go

46
2024/day04.go

@ -40,7 +40,51 @@ func (d Day4) Part1(r io.Reader) string {
} }
func (d Day4) Part2(r io.Reader) string { func (d Day4) Part2(r io.Reader) string {
return "" wordsearch := make([][]rune, 0)
s := bufio.NewScanner(r)
var sum int
for s.Scan() {
line := []rune(s.Text())
wordsearch = append(wordsearch, line)
}
s1 := make([]rune, 3)
s2 := make([]rune, 3)
for startx := range wordsearch {
for starty := range wordsearch[startx] {
toptobottom := [][]int{
{-1, -1},
{0, 0},
{1, 1},
}
for i, transpose := range toptobottom {
x, y := startx+transpose[0], starty+transpose[1]
s1[i] = runeAt(wordsearch, x, y)
}
bottomtotop := [][]int{
{-1, 1},
{0, 0},
{1, -1},
}
for i, transpose := range bottomtotop {
x, y := startx+transpose[0], starty+transpose[1]
s2[i] = runeAt(wordsearch, x, y)
}
if str1, str2 := string(s1), string(s2); (str1 == "SAM" || str1 == "MAS") && (str2 == "SAM" || str2 == "MAS") {
sum++
}
}
}
return printi(sum)
} }
func runeAt(r [][]rune, x, y int) rune { func runeAt(r [][]rune, x, y int) rune {

12
2024/puzzle_test.go

@ -58,7 +58,7 @@ func TestPuzzles(t *testing.T) {
{ {
solver: Day4{}, solver: Day4{},
ans1: "18", ans1: "18",
ans2: "", ans2: "9",
inp1: `MMMSXXMASM inp1: `MMMSXXMASM
MSAMXMSMSA MSAMXMSMSA
AMXSXMAAMM AMXSXMAAMM
@ -69,6 +69,16 @@ SMSMSASXSS
SAXAMASAAA SAXAMASAAA
MAMMMXMMMM MAMMMXMMMM
MXMXAXMASX`, MXMXAXMASX`,
inp2: `.M.S......
..A..MSMS.
.M.S.MAA..
..A.ASMSM.
.M.S.M....
..........
S.S.S.S.S.
.A.A.A.A..
M.M.M.M.M.
..........`,
}, },
} }

Loading…
Cancel
Save