This commit is contained in:
Yanick Champoux 2022-12-13 12:58:27 -05:00
parent f4553810c1
commit f80142b6a7
3 changed files with 38 additions and 42 deletions

View File

@ -7,9 +7,7 @@ const readInput = (...args) =>
readFile(...args), readFile(...args),
(lines) => lines.split("\n\n"), (lines) => lines.split("\n\n"),
R.compact, // remove last line R.compact, // remove last line
R.map( R.map((block) => block.split("\n").map((line) => eval(line)))
block => block.split("\n").map( line => eval(line) )
)
); );
export const puzzleInput = readInput(import.meta.url, "input"); export const puzzleInput = readInput(import.meta.url, "input");
@ -23,24 +21,22 @@ export function isLessThan(x,y) {
const res = isLessThan(a, b); const res = isLessThan(a, b);
if (res !== 0) return res; if (res !== 0) return res;
} }
if( x.length === y.length ) return 0 if (x.length === y.length) return 0;
return x.length < y.length ? -1 : 1; return x.length < y.length ? -1 : 1;
} }
return isLessThan(...[x,y].map( z => R.isNumber(z)? [z] : z )); return isLessThan(...[x, y].map((z) => (R.isNumber(z) ? [z] : z)));
} }
const passthru = (x) => (arg) => { const passthru = (x) => (arg) => {
x(arg); x(arg);
return arg; return arg;
} };
export default R.createPipe( export default R.createPipe(
R.map(([x, y]) => isLessThan(x, y)), R.map(([x, y]) => isLessThan(x, y)),
(results) => results.map( (results) => results.map((value, index) => ({ value, index: index + 1 })),
(value,index) => ({ value, index: index+1 })
),
R.filter(({ value }) => value !== 1), R.filter(({ value }) => value !== 1),
R.map( R.prop('index') ), R.map(R.prop("index")),
(results) => results.reduce((a, b) => a + b) (results) => results.reduce((a, b) => a + b)
); );

View File

@ -6,8 +6,9 @@ export default R.createPipe(
R.flatten, R.flatten,
R.concat(dividers), R.concat(dividers),
(packets) => packets.sort(isLessThan), (packets) => packets.sort(isLessThan),
packets => packets.map( (p,i) => ({ i: i+1, divider: dividers.includes(p) }) ), (packets) =>
packets.map((p, i) => ({ i: i + 1, divider: dividers.includes(p) })),
R.filter(({ divider }) => divider), R.filter(({ divider }) => divider),
R.map(R.prop('i')), R.map(R.prop("i")),
(v) => v.reduce((a,b)=>a*b), (v) => v.reduce((a, b) => a * b)
); );

View File

@ -7,7 +7,6 @@ import part2 from "./part2.js";
describe("part 1", () => { describe("part 1", () => {
test("readInput", () => { test("readInput", () => {
expect(sample[0][0]).toEqual([1, 1, 3, 1, 1]); expect(sample[0][0]).toEqual([1, 1, 3, 1, 1]);
}); });
test("lessThan", () => { test("lessThan", () => {
expect(isLessThan(1, 2)).toBe(-1); expect(isLessThan(1, 2)).toBe(-1);