main.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const fs = require('fs');
  2. const readline = require('readline');
  3. function letterToPriority(c) {
  4. let charCode = c.charCodeAt(0);
  5. const A = 65, Z=90, a=97, z=122;
  6. return charCode >= a && charCode <= z ? (charCode-a+1) : (charCode-A+27);
  7. }
  8. async function main() {
  9. let sum =0;
  10. let sumPart2 =0;
  11. let bufferOf3 = [];
  12. for await (let line of readline.createInterface({ input: process.stdin })) {
  13. if (!line || !line.length)
  14. continue;
  15. let compartments = [];
  16. let tmp = [];
  17. bufferOf3.push(line.split("").map(i => letterToPriority(i)));
  18. compartments.push(line.slice(0, line.length /2));
  19. compartments.push(line.slice(line.length /2));
  20. compartments = compartments.map(i=>i.split("").map(i => letterToPriority(i)))
  21. let matches = compartments[0].filter(i => {
  22. let result = compartments[1].includes(i) && !tmp.includes(i);
  23. tmp.push(i);
  24. return result;
  25. });
  26. matches.forEach(i => sum += i);
  27. if (bufferOf3.length === 3) {
  28. tmp = [];
  29. let onlyOne = bufferOf3[0].filter(i => {
  30. let result = bufferOf3[1].includes(i) && bufferOf3[2].includes(i) && !tmp.includes(i);
  31. tmp.push(i);
  32. return result;
  33. });
  34. sumPart2 += onlyOne[0];
  35. bufferOf3 = [];
  36. }
  37. }
  38. console.log(sum);
  39. console.log(sumPart2);
  40. };
  41. (main());