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有源光缆类型介绍及发展优势