export async function solveTask1part1() { const decoder = new TextDecoder("utf-8"); const inputData = await Deno.readFile('./1/input.txt'); const input = decoder.decode(inputData); // console.log(input.substring(0,50) + '...'); const lines = input.split('\n') .filter( l => l.trim() !== ''); console.log('lines', lines.slice(0, 5)); const lefts = lines.map( line => { const leftStr = line.substring(0, line.indexOf(' ')).trim(); const left = parseInt(leftStr); return left }).sort(); const rights = lines.map( line => { const rightStr = line.substring(line.indexOf(' ')).trim(); const right = parseInt(rightStr); return right }).sort(); console.log('lefts', lefts.slice(0, 5)); console.log('rights', rights.slice(0, 5)); const diffs = [] for (let i = 0; i < lines.length; i++) { const left = lefts[i]; const right = rights[i]; diffs.push(Math.abs(right - left)); } const diffSum = diffs .reduce( (p, c) => p + c, 0); console.log('diffSum', diffSum); } export async function solveTask1part2() { const decoder = new TextDecoder("utf-8"); const inputData = await Deno.readFile('./1/input.txt'); const input = decoder.decode(inputData); const lines = input.split('\n') .filter( l => l.trim() !== ''); console.log('lines', lines.slice(0, 5)); const lefts = lines.map( line => { const leftStr = line.substring(0, line.indexOf(' ')).trim(); const left = parseInt(leftStr); return left }).sort(); const rights = lines.map( line => { const rightStr = line.substring(line.indexOf(' ')).trim(); const right = parseInt(rightStr); return right }).sort(); console.log('lefts', lefts.slice(0, 5)); console.log('rights', rights.slice(0, 5)); const scores = [] let iR = 0; for (let i = 0; i < lines.length; i++) { const left = lefts[i]; let multiplyer = 0; while (rights[iR] < left) { iR++; } while (rights[iR] === left) { multiplyer++; iR++; } scores.push(left * multiplyer); } const scoreSum = scores .reduce( (p, c) => p + c, 0); console.log('scoreSum', scoreSum); }