| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- const fs = require('fs');
- const readline = require('readline');
- function letterToPriority(c) {
- let charCode = c.charCodeAt(0);
- const A = 65, Z=90, a=97, z=122;
- return charCode >= a && charCode <= z ? (charCode-a+1) : (charCode-A+27);
- }
- async function main() {
- let sum =0;
- let sumPart2 =0;
- let bufferOf3 = [];
- for await (let line of readline.createInterface({ input: process.stdin })) {
- if (!line || !line.length)
- continue;
- let compartments = [];
- let tmp = [];
- bufferOf3.push(line.split("").map(i => letterToPriority(i)));
- compartments.push(line.slice(0, line.length /2));
- compartments.push(line.slice(line.length /2));
- compartments = compartments.map(i=>i.split("").map(i => letterToPriority(i)))
- let matches = compartments[0].filter(i => {
- let result = compartments[1].includes(i) && !tmp.includes(i);
- tmp.push(i);
- return result;
- });
- matches.forEach(i => sum += i);
- if (bufferOf3.length === 3) {
- tmp = [];
- let onlyOne = bufferOf3[0].filter(i => {
- let result = bufferOf3[1].includes(i) && bufferOf3[2].includes(i) && !tmp.includes(i);
- tmp.push(i);
- return result;
- });
- sumPart2 += onlyOne[0];
- bufferOf3 = [];
- }
- }
- console.log(sum);
- console.log(sumPart2);
- };
- (main());
|