DEV Community

Discussion on: Advent of Code 2020 Solution Megathread - Day 24: Lobby Layout

Collapse
 
kudostoy0u profile image
Kudos Beluga • Edited

Part 1 JS solution is done, part 2 is coming soon!

let fs = require("fs"),
    tiles = new Set(),
    valids = ["n", "e", "ne", "nw", "se", "sw"],
    data = fs.readFileSync("input.txt", "utf8").split("\n")
const intoarray = (dir, existing=[]) => {
    let firsttwo = dir[0] + dir[1];
    if (firsttwo) {
        if (valids.indexOf(firsttwo) > -1) {
            existing.push(firsttwo);
            return intoarray(dir.slice(2),existing)
        } else {
            existing.push(firsttwo[0])
            return intoarray(dir.slice(1),existing)
        }
    } else {
        return existing;
    }
}
for (const i in data) {
    let e = 0,
        n = 0;
    for (r of intoarray(data[i])) {
        switch (r) {
            case "e":
                e++
                break;
            case "w":
                e--
                break;
            case "ne":
                n++
                e += 0.5
                break;
            case "nw":
                n++
                e -= 0.5
                break;
            case "se":
                n--
                e += 0.5
                break;
            case "sw":
                n--
                e -= 0.5
                break;
        }
    }
    let col = "b";
    if (tiles.has(n + "," + e)) tiles.delete(n + "," + e)
    else tiles.add(n + "," + e);
}

console.log(tiles.size);
Enter fullscreen mode Exit fullscreen mode