51 lines
1.9 KiB
JavaScript
51 lines
1.9 KiB
JavaScript
import fs from 'node:fs'
|
|
fs.readFile('example.txt', ({ encoding: "utf-8" }), (err, data) => {
|
|
const letters = ["X", "M", "A", "S"]
|
|
|
|
const rows = [...data.split('\n')]
|
|
|
|
// directions, straight first: east,south,west,north,southeast,southwest,northwest,northeast
|
|
const dirs = [[1, 0], [0, 1], [-1, 0], [0, -1], [1, 1], [-1, 1], [-1, -1], [-1, 1]]
|
|
|
|
let found_words = 0
|
|
let found_letters = []
|
|
const width = rows[0].length
|
|
const height = rows.length
|
|
// letters.forEach(letter => {
|
|
// for (i = 0; i < rows.length; i++) {
|
|
|
|
|
|
// }
|
|
// })
|
|
for (let letter = 0; letter < letters.length; letter++) {
|
|
let letter_positions = []
|
|
for (let x = 1; x <= width; x++) {
|
|
for (let y = 1; y <= height; y++) {
|
|
if (rows[y - 1][x - 1] === letters[letter]) {
|
|
letter_positions.push([x, y])
|
|
|
|
// check if there is a next letter
|
|
dirs.forEach(direction => {
|
|
let [new_x, new_y] = direction
|
|
if (x + new_x in [...rows[y - 1]] && y + new_y in [...rows.keys()] && letter + 1 in [...letters.keys()]) {
|
|
//console.log(`I'm at ${x},${y} with ${letters[letter]}. Looking for letter at ${x + new_x},${y + new_y}`)
|
|
if (letters[letter + 1] === rows[y - 1 + new_y][x - 1 + new_x]) {
|
|
console.log(`I am at ${x},${y} with $ ${letters[letter]}. Found ${letters[letter + 1]}.`)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
found_letters[letter] = letter_positions
|
|
}
|
|
|
|
console.log(found_letters)
|
|
console.log(`width: ${width}`)
|
|
console.log(`height: ${height}`)
|
|
})
|
|
|
|
function findFirstLetter(letter) {
|
|
const [row, col] = Array
|
|
return [row, col]
|
|
} |