first day
This commit is contained in:
+24
@@ -0,0 +1,24 @@
|
||||
import fs from 'node:fs';
|
||||
|
||||
|
||||
const file = fs.readFileSync('./2024/inputs/1').toString();
|
||||
const left = []
|
||||
const right: number[] = []
|
||||
// for await (const line of file.readLines()) {
|
||||
|
||||
// }
|
||||
|
||||
const regexes = file.matchAll(/^(\d+) (\d+)$/gm)
|
||||
|
||||
for(const match of regexes){
|
||||
left.push(Number(match[1]))
|
||||
right.push(Number(match[2]))
|
||||
}
|
||||
left.sort()
|
||||
right.sort()
|
||||
|
||||
const result = left.reduce((_prev, curr, index)=>{
|
||||
return _prev + Math.abs(curr - right[index])
|
||||
},0)
|
||||
|
||||
console.log(result)
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
import fs from 'node:fs';
|
||||
|
||||
|
||||
const file = fs.readFileSync('./2024/inputs/1').toString();
|
||||
const left: number[] = []
|
||||
const right: number[] = []
|
||||
const leftOccurences: {[key:number]:number} = {}
|
||||
const rightOccurences: {[key:number]:number} = {}
|
||||
|
||||
const regexes = file.matchAll(/^(\d+) (\d+)$/gm)
|
||||
|
||||
for(const match of regexes){
|
||||
const leftNumber = Number(match[1])
|
||||
const rightNumber = Number(match[2])
|
||||
left.push(leftNumber)
|
||||
right.push(rightNumber)
|
||||
|
||||
if(!(rightNumber in rightOccurences)){
|
||||
rightOccurences[rightNumber] = 0
|
||||
}
|
||||
rightOccurences[rightNumber]++
|
||||
}
|
||||
|
||||
const result = left.reduce((_prev, curr, index)=>{
|
||||
return _prev + (curr * (rightOccurences[curr] ?? 0))
|
||||
},0)
|
||||
|
||||
console.log(result)
|
||||
+1000
File diff suppressed because it is too large
Load Diff
Generated
+12
-7
@@ -4,6 +4,7 @@
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "Advent-of-code",
|
||||
"dependencies": {
|
||||
"@digitak/esrun": "^3.2.25",
|
||||
"typescript": "^5.3.2"
|
||||
@@ -482,11 +483,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
||||
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
"fill-range": "^7.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -570,9 +572,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
||||
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
},
|
||||
@@ -638,6 +641,7 @@
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
}
|
||||
@@ -682,6 +686,7 @@
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-number": "^7.0.0"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user