jsadvent/solutions/2016/6.js
2020-12-10 02:33:00 -06:00

43 lines
1.1 KiB
JavaScript

const { Glib, Maps } = require('../../lib');
const parse = (input) =>
Glib.fromLines(input).reduce((frequencies, string, index) => {
if (index === 0) {
frequencies = [];
for (let i = 0; i < string.length; i++) {
frequencies[i] = string[i].characterFrequencies;
}
} else {
for (let i = 0; i < string.length; i++) {
frequencies[i] = Maps.add(
frequencies[i],
string[i].characterFrequencies,
);
}
}
return frequencies;
}, null);
module.exports = {
'1': (input) =>
parse(input)
.glib.map((i) =>
i.glibEntries.reduce(
([maxChar, maxCount], [char, count]) =>
maxCount > count ? [maxChar, maxCount] : [char, count],
['!', -Infinity],
),
)
.map(([char]) => char).string,
'2': (input) =>
parse(input)
.glib.map((i) =>
i.glibEntries.reduce(
([minChar, minCount], [char, count]) =>
count < minCount ? [char, count] : [minChar, minCount],
['!', Infinity],
),
)
.map(([char]) => char).string,
};