Unable to load image

The luckiest of days, Day 13!!

Let's fricking gooo!

17
Jump in the discussion.

No email address required.

I got distracted by work so I was late, today's was easier than yesterday's though.

function compareSignals(left, right) {
    if (typeof left === 'number' && typeof right === 'number') {
        if (left < right) {
            return 1;
        } else if (left === right) {
            return 0;
        } else {
            return -1;
        }
    } else if (typeof left === 'object' && typeof right === 'object') {
        for (var i = 0; i < left.length; i++) {
            if (right[i] === undefined) {
                return -1;
            }
            var comp = compareSignals(left[i], right[i]);
            if (comp !== 0) {
                return comp;
            }
        }
        if (left.length < right.length) {
            return 1;
        } else {
            return 0;
        }
    } else {
        if (typeof left === 'number') {
            return compareSignals([left], right);
        } else if (typeof right === 'number') {
            return compareSignals(left, [right]);
        }
    }
}

var part1 = ((signals) => {
    return signals
        .split('\n\n')
        .map(pair => {
            return pair
                .split('\n')
                .map(str => eval(str));
        })
        .map(([left, right]) => compareSignals(left, right))
        .map((output, index) => output === 1 ? index + 1 : 0)
        .reduce((a, v) => a + v)
})(input);

var part2 = ((signals) => {
    var sortedSignals = signals
        .split('\n\n')
        .map(pair => {
            return pair
                .split('\n')
                .map(str => eval(str));
        })
        .flatMap(s => s)
        .concat([[[2]]], [[[6]]])
        .sort(compareSignals)
        .reverse();

    return ([
        sortedSignals.findIndex(s => JSON.stringify(s) === '[[2]]'),
        sortedSignals.findIndex(s => JSON.stringify(s) === '[[6]]')
    ])
        .map(key => key + 1)
        .reduce((a, v) => a * v);
})(input);
Jump in the discussion.

No email address required.

That degree finally paying off

Jump in the discussion.

No email address required.

:#marseygrad: :#marseycodecel:

Jump in the discussion.

No email address required.

Link copied to clipboard
Action successful!
Error, please refresh the page and try again.