Skip to content

Commit

Permalink
move safe access to helper
Browse files Browse the repository at this point in the history
  • Loading branch information
kyle.brown committed Dec 6, 2024
1 parent 7fa3e57 commit 598e864
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 22 deletions.
35 changes: 13 additions & 22 deletions 4/main.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"adventofcode2024/pkg/helper"
"bufio"
"fmt"
"os"
Expand Down Expand Up @@ -48,11 +49,11 @@ func countXmasCross(i, j int, data [][]byte) int {
}

// cross top left -> bot right
if (safeAccess(i-1, j-1, data) == 'M' && safeAccess(i+1, j+1, data) == 'S') || // forward
(safeAccess(i-1, j-1, data) == 'S' && safeAccess(i+1, j+1, data) == 'M') { // backward
if (helper.SafeAccess(i-1, j-1, data) == 'M' && helper.SafeAccess(i+1, j+1, data) == 'S') || // forward
(helper.SafeAccess(i-1, j-1, data) == 'S' && helper.SafeAccess(i+1, j+1, data) == 'M') { // backward
// cross top right -> bot left
if (safeAccess(i-1, j+1, data) == 'M' && safeAccess(i+1, j-1, data) == 'S') || // forward
(safeAccess(i-1, j+1, data) == 'S' && safeAccess(i+1, j-1, data) == 'M') { // backward
if (helper.SafeAccess(i-1, j+1, data) == 'M' && helper.SafeAccess(i+1, j-1, data) == 'S') || // forward
(helper.SafeAccess(i-1, j+1, data) == 'S' && helper.SafeAccess(i+1, j-1, data) == 'M') { // backward
return 1
}
}
Expand All @@ -67,58 +68,48 @@ func countXmasInstance(i, j int, data [][]byte) int {
var acc int

// forward
if safeAccess(i, j+1, data) == 'M' && safeAccess(i, j+2, data) == 'A' && safeAccess(i, j+3, data) == 'S' {
if helper.SafeAccess(i, j+1, data) == 'M' && helper.SafeAccess(i, j+2, data) == 'A' && helper.SafeAccess(i, j+3, data) == 'S' {
acc++
}

// backward
if safeAccess(i, j-1, data) == 'M' && safeAccess(i, j-2, data) == 'A' && safeAccess(i, j-3, data) == 'S' {
if helper.SafeAccess(i, j-1, data) == 'M' && helper.SafeAccess(i, j-2, data) == 'A' && helper.SafeAccess(i, j-3, data) == 'S' {
acc++
}

// up
if safeAccess(i+1, j, data) == 'M' && safeAccess(i+2, j, data) == 'A' && safeAccess(i+3, j, data) == 'S' {
if helper.SafeAccess(i+1, j, data) == 'M' && helper.SafeAccess(i+2, j, data) == 'A' && helper.SafeAccess(i+3, j, data) == 'S' {
acc++
}

// down
if safeAccess(i-1, j, data) == 'M' && safeAccess(i-2, j, data) == 'A' && safeAccess(i-3, j, data) == 'S' {
if helper.SafeAccess(i-1, j, data) == 'M' && helper.SafeAccess(i-2, j, data) == 'A' && helper.SafeAccess(i-3, j, data) == 'S' {
acc++
}

// diag top left -> bottom right
if safeAccess(i+1, j+1, data) == 'M' && safeAccess(i+2, j+2, data) == 'A' && safeAccess(i+3, j+3, data) == 'S' {
if helper.SafeAccess(i+1, j+1, data) == 'M' && helper.SafeAccess(i+2, j+2, data) == 'A' && helper.SafeAccess(i+3, j+3, data) == 'S' {
acc++
}

// diag bottom right -> top left
if safeAccess(i-1, j-1, data) == 'M' && safeAccess(i-2, j-2, data) == 'A' && safeAccess(i-3, j-3, data) == 'S' {
if helper.SafeAccess(i-1, j-1, data) == 'M' && helper.SafeAccess(i-2, j-2, data) == 'A' && helper.SafeAccess(i-3, j-3, data) == 'S' {
acc++
}

// diag top right -> bottom left
if safeAccess(i+1, j-1, data) == 'M' && safeAccess(i+2, j-2, data) == 'A' && safeAccess(i+3, j-3, data) == 'S' {
if helper.SafeAccess(i+1, j-1, data) == 'M' && helper.SafeAccess(i+2, j-2, data) == 'A' && helper.SafeAccess(i+3, j-3, data) == 'S' {
acc++
}

// diag bottom left -> top right
if safeAccess(i-1, j+1, data) == 'M' && safeAccess(i-2, j+2, data) == 'A' && safeAccess(i-3, j+3, data) == 'S' {
if helper.SafeAccess(i-1, j+1, data) == 'M' && helper.SafeAccess(i-2, j+2, data) == 'A' && helper.SafeAccess(i-3, j+3, data) == 'S' {
acc++
}

return acc
}

func safeAccess(i, j int, data [][]byte) byte {
if i < 0 || i >= len(data) {
return 0
}
if j < 0 || j >= len(data[i]) {
return 0
}
return data[i][j]
}

func getData(filename string) [][]byte {
f, err := os.Open(filename)
if err != nil {
Expand Down
11 changes: 11 additions & 0 deletions pkg/helper/arrays.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package helper

func SafeAccess(i, j int, data [][]byte) byte {
if i < 0 || i >= len(data) {
return 0
}
if j < 0 || j >= len(data[i]) {
return 0
}
return data[i][j]
}

0 comments on commit 598e864

Please sign in to comment.