2021-07
This commit is contained in:
parent
a38fc05fe2
commit
72bcdcd9db
20
2021/07/part1.mjs
Normal file
20
2021/07/part1.mjs
Normal file
@ -0,0 +1,20 @@
|
||||
import fs from "fs-extra";
|
||||
import fp from "lodash/fp.js";
|
||||
import _ from "lodash";
|
||||
|
||||
export const processInput = (input) => input.split(',').map( x => parseInt(x) );
|
||||
|
||||
export function solution(input) {
|
||||
const min = _.min(input);
|
||||
const max = _.max(input);
|
||||
|
||||
let minScore = 9E99;
|
||||
|
||||
for( let i = min; i<= max; i++ ) {
|
||||
const score = _.sum(input.map( x => Math.abs( x - i ) ));
|
||||
if( score >= minScore ) break;
|
||||
minScore = score;
|
||||
}
|
||||
|
||||
return minScore;
|
||||
}
|
24
2021/07/part2.mjs
Normal file
24
2021/07/part2.mjs
Normal file
@ -0,0 +1,24 @@
|
||||
import fs from "fs-extra";
|
||||
import fp from "lodash/fp.js";
|
||||
import _ from "lodash";
|
||||
|
||||
import * as p1 from './part1.mjs';
|
||||
|
||||
export function solution(input) {
|
||||
const min = _.min(input);
|
||||
const max = _.max(input);
|
||||
|
||||
let minScore = 9E99;
|
||||
|
||||
for( let i = min; i<= max; i++ ) {
|
||||
const score = _.sum(input.map( x => {
|
||||
const p = Math.abs( x - i );
|
||||
if (p==0) return 0;
|
||||
return p * (p+1) /2
|
||||
}));
|
||||
if( score >= minScore ) break;
|
||||
minScore = score;
|
||||
}
|
||||
|
||||
return minScore;
|
||||
}
|
20
2021/07/test.mjs
Normal file
20
2021/07/test.mjs
Normal file
@ -0,0 +1,20 @@
|
||||
// https://adventofcode.com/2021/day/07
|
||||
|
||||
import tap from "tap";
|
||||
import fs from "fs-extra";
|
||||
|
||||
import * as p1 from "./part1.mjs";
|
||||
import * as p2 from "./part2.mjs";
|
||||
|
||||
const sample = p1.processInput("16,1,2,0,4,2,7,1,2,14");
|
||||
const input = fs.readFile("input", "utf8").then(p1.processInput);
|
||||
|
||||
tap.test("part1", async (t) => {
|
||||
t.equal(p1.solution(await sample), 37);
|
||||
t.equal(p1.solution(await input), 340987);
|
||||
});
|
||||
|
||||
tap.test("part2", async (t) => {
|
||||
t.equal(p2.solution(await sample), 168);
|
||||
t.equal(p2.solution(await input), 96987874);
|
||||
});
|
Loading…
Reference in New Issue
Block a user