javascript 2017年AoC - 第2天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 2017年AoC - 第2天相关的知识,希望对你有一定的参考价值。
function prepare(data) {
return data
.split('\n')
.map(x => x
.split('\t')
.map(Number)
);
}
function findMinMax(nums) {
return [
Math.min.apply(Math, nums),
Math.max.apply(Math, nums)
];
}
function findQuotient(nums) {
const sortedNums = nums.slice().filter(Boolean).sort((a, b) => b - a);
function go(xs) {
for (let i = 1; i < xs.length; i += 1) {
const mod = xs[0] % xs[i];
if (mod === 0) {
return xs[0] / xs[i];
}
}
return go(xs.slice(1));
}
return go(sortedNums);
}
function checksum(data) {
return prepare(data)
.map(findMinMax)
.reduce((a, [min, max]) => a + (max - min), 0);
}
function checksum2(data) {
return prepare(data)
.map(findQuotient)
.reduce((a, quotient) => a + quotient, 0);
}
//console.log('part 1:', checksum(input));
//console.log('part 2:', checksum2(input));
以上是关于javascript 2017年AoC - 第2天的主要内容,如果未能解决你的问题,请参考以下文章
润泽酒窖—— AOC与AOP的区别
javascript 代码2017年出现 - 第6天
javascript 代码2017年出现 - 第5天
javascript 代码2017年出现 - 第4天
javascript 代码2017年出现 - 第3天
AOC有源光缆类型介绍及发展优势