74 lines
2.1 KiB
Go
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)
|
|
}
|