Skip to content

Instantly share code, notes, and snippets.

@raptox
Created December 2, 2022 16:36
Show Gist options
  • Save raptox/43d423b03623cb8bab5f88bf5673b3bb to your computer and use it in GitHub Desktop.
Save raptox/43d423b03623cb8bab5f88bf5673b3bb to your computer and use it in GitHub Desktop.
Advent of Code 2022

Javascript, NodeJS

Part 1
var fs = require('fs');
var filename = 'puzzle2.txt';
fs.readFile(filename, 'utf8', (err, data) => {
    if (err) throw err;
    const rounds = data.split('\n');
    
    let sum = 0;
    rounds.forEach((round, i) => {
        let players = round.split(' ');
        sum += getScore(players[0], players[1]);
    });
    console.log(sum);
});

function getScore(oppenent, you) {
    let score = [1, 2, 3];
    let guide1 = ["A", "B", "C"];
    let guide2 = ["X", "Y", "Z"];
    
    let player1 = guide1.indexOf(oppenent);
    let player2 = guide2.indexOf(you);
    
    if ( player1 > player2 && player1-player2 == 1) {
        return score[player2];
    } else if (player1 == player2) {
        return score[player2] + 3;
    } else if (player2 > player1 && player2-player1 == 2) {
        return score[player2];
    } else {
        return score[player2] + 6;
    }
}
Part 2
var fs = require('fs');
var filename = 'puzzle2.txt';
fs.readFile(filename, 'utf8', (err, data) => {
    if (err) throw err;
    const rounds = data.split('\n');
    
    let sum = 0;
    rounds.forEach((round, i) => {
        let players = round.split(' ');
        sum += getScore(players[0], players[1]);
    });
    console.log(sum);
});

function getScore(oppenent, you) {
    let score = [1, 2, 3];
    let guide1 = ["A", "B", "C"];
    
    if (you == "X") {
        return score[guide1.indexOf(getLose(oppenent))];
    } else if (you == "Y") {
        return 3 + score[guide1.indexOf(oppenent)];
    } else if (you == "Z") {
        return 6 + score[guide1.indexOf(getWin(oppenent))];
    }
}

function getLose(opponent) {
    switch (opponent) {
        case "A": return "C";
        case "B": return "A";
        case "C": return "B";
    }
}

function getWin(opponent) {
    switch (opponent) {
        case "A": return "B";
        case "B": return "C";
        case "C": return "A";
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment