37 lines
859 B
JavaScript
37 lines
859 B
JavaScript
|
let fs = require("fs");
|
||
|
|
||
|
let input = fs.readFileSync("inputs.txt", "utf8").split('');
|
||
|
|
||
|
function swapCase(c) {
|
||
|
return c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase();
|
||
|
}
|
||
|
|
||
|
function collapsePolymer(polymer) {
|
||
|
for (let i = 0; i < polymer.length; i++) {
|
||
|
let c = polymer[i];
|
||
|
|
||
|
if (i !== polymer.length - 1 && c === swapCase(polymer[i + 1])) {
|
||
|
polymer.splice(i, 2);
|
||
|
i = Math.max(-1, i - 2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return polymer.length;
|
||
|
}
|
||
|
|
||
|
|
||
|
let shortest = Math.min(...
|
||
|
'abcdefghijklmnopqrstuvwxyz'
|
||
|
.split('')
|
||
|
.map(
|
||
|
x => collapsePolymer(
|
||
|
input.filter(
|
||
|
y => y.toUpperCase() !== x.toUpperCase()
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
|
||
|
console.log(`[Part 1] Polymer length: ${ collapsePolymer(input) }`);
|
||
|
console.log(`[Part 2] Shortest polymer length: ${ shortest }`);
|