const fs = require("fs");
const forwardRegex = /XMAS/;
const backwardRegex = /SAMX/;
const input = fs.readFileSync("input.txt", "utf-8");
const inputArr = input.split("\n");
let totalMatches = 0;
// console.log(inputArr)
// const forwardMatchs = input.match(forwardRegex)
// console.log(input)
// console.log(forwardMatchs.length)
//create a sliding window to match the words

let lineRegex = 0;
for (row of inputArr) {
  // console.log(row)
  const forwardMatches = row.match(forwardRegex);
  const backwordsMatches = row.match(backwardRegex);

  if (forwardMatches) {
    lineRegex += forwardMatches.length;
  }
  if (backwordsMatches) {
    lineRegex += backwordsMatches.length;
  }
}

console.log("lineRegex: ",lineRegex)

// console.log(inputArr)
const maxRows = inputArr.length;
const maxLetters = inputArr[0].length;

//horizontal words
for (let x = 0; x < maxRows; x++) {
  for (let y = 0; y + 3 < maxLetters; y++) {
    const word = inputArr[x][y] + inputArr[x][y + 1] + inputArr[x][y + 2] + inputArr[x][y + 3];
    // console.log(word)
    if (word.match(forwardRegex)|| word.match(backwardRegex)) {
      totalMatches++;
    }
  }
}
console.log("after horizontal: ",totalMatches)

//vertical words
for (let x = 0; x + 3 < maxRows; x++) {
  for (let y = 0; y < maxLetters; y++) {
    const word = inputArr[x][y] + inputArr[x + 1][y] + inputArr[x + 2][y] + inputArr[x + 3][y];
    if (word.match(forwardRegex)|| word.match(backwardRegex)) {
      totalMatches++;
    }
  }
}
console.log("after vertical: ",totalMatches)
//angled words nw-se
for (let x = 0; x + 3 < maxRows; x++) {
  for (let y = 0; y +3< maxLetters; y++) {
    const word = inputArr[x][y] + inputArr[x + 1][y + 1] + inputArr[x + 2][y + 2] + inputArr[x + 3][y + 3];
    if (word.match(forwardRegex)|| word.match(backwardRegex)) {
      totalMatches++;
    }
  }
}
console.log("after nw-se: ",totalMatches)
//angled words ne-sw
for (let x = 0; x + 3 < maxRows; x++) {
  for (let y = 0; y +3< maxLetters; y++) {
    const word = inputArr[x][y+3] + inputArr[x+1][y + 2] + inputArr[x + 2][y + 1] + inputArr[x+3][y];
    if (word.match(forwardRegex)|| word.match(backwardRegex)) {
      totalMatches++;
    }
    // console.log(word);
  }
}
console.log("after ne-sw: ",totalMatches)

console.log("totalMatches: ", totalMatches);
