Files
adventofcode2025/04/main.go
Javier-Orestis MANTZIOS 89ca6f60df Rename folders
2025-01-08 14:00:10 +02:00

74 lines
2.1 KiB
Go

package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
file, err := os.Open("input")
if err != nil {
panic(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
resultXMAS := 0
resultMASX := 0
// word := []string{"X","M","A","S"}
table := [][]string{}
for scanner.Scan() {
line := scanner.Text()
// fmt.Println(line)
table = append(table, strings.Split(line, ""))
}
for i := range table {
for j := range table[i] {
//XMAS
if table[i][j] == "X" {
//HORIZONTAL DOWN
if i < len(table)-3 && table[i+1][j]+table[i+2][j]+table[i+3][j] == "MAS" {
resultXMAS++
}
//HORIZONTAL UP
if i >= 3 && table[i-1][j]+table[i-2][j]+table[i-3][j] == "MAS" {
resultXMAS++
}
//HORIZONTAL RIGHT
if j < len(table[i])-3 && table[i][j+1]+table[i][j+2]+table[i][j+3] == "MAS" {
resultXMAS++
}
//HORIZONTAL LEFT
if j >= 3 && table[i][j-1]+table[i][j-2]+table[i][j-3] == "MAS" {
resultXMAS++
}
//DIAGONAL DOWNRIGHT
if i < len(table)-3 && j < len(table[i])-3 && table[i+1][j+1]+table[i+2][j+2]+table[i+3][j+3] == "MAS" {
resultXMAS++
}
//DIAGONAL DOWNLEFT
if i < len(table)-3 && j >= 3 && table[i+1][j-1]+table[i+2][j-2]+table[i+3][j-3] == "MAS" {
resultXMAS++
}
//DIAGONAL UPLEFT
if i >= 3 && j >= 3 && table[i-1][j-1]+table[i-2][j-2]+table[i-3][j-3] == "MAS" {
resultXMAS++
}
//DIAGONAL UPRIGHT
if i >= 3 && j < len(table[i])-3 && table[i-1][j+1]+table[i-2][j+2]+table[i-3][j+3] == "MAS" {
resultXMAS++
}
}
//MASX
if table[i][j] == "A" {
if i < len(table)-1 && i >=1 && j < len(table[i])-1 && j>=1 && (table[i-1][j-1]+table[i+1][j+1] == "MS" || table[i-1][j-1]+table[i+1][j+1] == "SM") && (table[i-1][j+1]+table[i+1][j-1] == "MS" || table[i-1][j+1]+table[i+1][j-1] == "SM") {
resultMASX++
}
}
}
}
fmt.Println("XMAS contained :",resultXMAS)
fmt.Println("MAS in X contained :",resultMASX)
}