advent of code day 3: i might be r-slurred edition

idk how to do multi line spoilers lol



letters = ['','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

total_score = 0

team = []

for line in open("input.txt"):
    team.append(line.strip())

for i in range(2, len(team), 3):
    for letter in team[i]:
        if letter in team[i-2] and letter in team[i-1]:
            total_score += letters.index(letter)
            break

print(total_score)

some real caveman shit but it works

80
Jump in the discussion.

No email address required.

Anyone else doing javascript?

/* Part 1 */
function sackPriority(sack) {
    if (!sack.length) return 0;

    var count = Math.floor(sack.length/2);
    var left = sack.substr(0,count);
    var right = sack.substr(count);

    for (var i=0;i<count;i++) {
        var c = left.charAt(i);
        if (right.indexOf(c) >= 0) {
            return (left.charCodeAt(i) >= 97) 
                ? left.charCodeAt(i) - 96 : left.charCodeAt(i) - 38;
        }
    }
}


var total = sacks.reduce(function(acc,cur) {
    return acc + sackPriority(cur);
},0);


/* Part 2 */
function badgeType(sacks) {
    if (!sacks[0].length) return 0;
    for (var i=0;i<sacks[0].length;i++) {
        var c = sacks[0].charAt(i);
        if (sacks[1].indexOf(c) >= 0
                && sacks[2].indexOf(c) >= 0) {
            return (sacks[0].charCodeAt(i) >= 97) 
                ? sacks[0].charCodeAt(i) - 96 : sacks[0].charCodeAt(i) - 38;            
        }
    }
}


var total = 0;
for (var j=0;j<sacks.length;j+=3) {
    total += badgeType(sacks.slice(j,j+3));
}
Jump in the discussion.

No email address required.

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