From 7fe40661f11e17e120ec4a5a3fb8e4320eb21e19 Mon Sep 17 00:00:00 2001 From: TimHi Date: Mon, 1 Jan 2024 17:48:59 +0100 Subject: [PATCH] stuff --- Ruby/2023/.prettierrc.yml | 10 ------ Ruby/2023/d2/day02.rb | 2 +- Ruby/2023/package-lock.json | 37 ----------------------- Ruby/2023/package.json | 6 ---- Typescript/2023/package-lock.json | 17 ++++++++++- Typescript/2023/package.json | 4 ++- Typescript/2023/src/days/day24/day24.ts | 22 +++++++++++++- Typescript/2023/src/days/day24/sample.txt | 5 +++ Typescript/2023/src/main.ts | 4 +-- Typescript/2023/src/util/regex.ts | 2 +- 10 files changed, 49 insertions(+), 60 deletions(-) delete mode 100644 Ruby/2023/.prettierrc.yml delete mode 100644 Ruby/2023/package-lock.json delete mode 100644 Ruby/2023/package.json diff --git a/Ruby/2023/.prettierrc.yml b/Ruby/2023/.prettierrc.yml deleted file mode 100644 index fee30b2..0000000 --- a/Ruby/2023/.prettierrc.yml +++ /dev/null @@ -1,10 +0,0 @@ -tabWidth: 2 -semi: false -singleQuote: true -trailingComma: "none" - -rubyArrayLiteral: true -rubyHashLabel: true -rubyModifier: true -rubySingleQuote: true -rubyToProc: false \ No newline at end of file diff --git a/Ruby/2023/d2/day02.rb b/Ruby/2023/d2/day02.rb index 5a2c0af..feb728f 100644 --- a/Ruby/2023/d2/day02.rb +++ b/Ruby/2023/d2/day02.rb @@ -16,7 +16,7 @@ def valid?(line) get_colors_num(split, 'green').sum <= 13 && get_colors_num(split, 'blue').sum <= 14 end - .all? { |el| el === true } + .all? { |el| el === true } end def solve diff --git a/Ruby/2023/package-lock.json b/Ruby/2023/package-lock.json deleted file mode 100644 index 1fd3d89..0000000 --- a/Ruby/2023/package-lock.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "2023", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "@prettier/plugin-ruby": "^4.0.4", - "prettier": "^3.1.1" - } - }, - "node_modules/@prettier/plugin-ruby": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@prettier/plugin-ruby/-/plugin-ruby-4.0.4.tgz", - "integrity": "sha512-lCpvfS/dQU5WrwN3AQ5vR8qrvj2h5gE41X08NNzAAXvHdM4zwwGRcP2sHSxfu6n6No+ljWCVx95NvJPFTTjCTg==", - "dev": true, - "peerDependencies": { - "prettier": "^3.0.0" - } - }, - "node_modules/prettier": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", - "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - } - } -} diff --git a/Ruby/2023/package.json b/Ruby/2023/package.json deleted file mode 100644 index 3e452e6..0000000 --- a/Ruby/2023/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "devDependencies": { - "@prettier/plugin-ruby": "^4.0.4", - "prettier": "^3.1.1" - } -} diff --git a/Typescript/2023/package-lock.json b/Typescript/2023/package-lock.json index 841f510..2cedf69 100644 --- a/Typescript/2023/package-lock.json +++ b/Typescript/2023/package-lock.json @@ -13,7 +13,9 @@ "hamming": "^0.0.2", "lodash": "^4.17.21", "nunjucks": "^3.2.4", - "ts-2d-geometry": "^6.3.2" + "ts-2d-geometry": "^6.3.2", + "vector": "^0.0.4", + "vector-math": "^1.1.1" }, "devDependencies": { "@types/lodash": "^4.14.202", @@ -3215,6 +3217,19 @@ "punycode": "^2.1.0" } }, + "node_modules/vector": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vector/-/vector-0.0.4.tgz", + "integrity": "sha512-tq0nE9uYgHX/ZEWxstUerXa9C5hvJuIddQGtpXiMtHoxP13uDUIFtc6b5Sc1OpvkVTGM18x28QreBm7Zi8CJoQ==", + "engines": { + "node": "*" + } + }, + "node_modules/vector-math": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vector-math/-/vector-math-1.1.1.tgz", + "integrity": "sha512-M98KASudhcZIgODF8IHpqdOriCW3TWNrBNw/j+xgK16arF4lqbULwrhn2Lt4deQkretxXVPKndEJ0RptUCRiYA==" + }, "node_modules/vite": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.7.tgz", diff --git a/Typescript/2023/package.json b/Typescript/2023/package.json index 0fafe69..1b1b438 100644 --- a/Typescript/2023/package.json +++ b/Typescript/2023/package.json @@ -29,6 +29,8 @@ "hamming": "^0.0.2", "lodash": "^4.17.21", "nunjucks": "^3.2.4", - "ts-2d-geometry": "^6.3.2" + "ts-2d-geometry": "^6.3.2", + "vector": "^0.0.4", + "vector-math": "^1.1.1" } } diff --git a/Typescript/2023/src/days/day24/day24.ts b/Typescript/2023/src/days/day24/day24.ts index 114e8a6..65cd252 100644 --- a/Typescript/2023/src/days/day24/day24.ts +++ b/Typescript/2023/src/days/day24/day24.ts @@ -1,10 +1,30 @@ import * as fs from "fs"; +import { getAllNumbersInString } from "../../util/regex"; +import { Vector } from "vector-math"; + +interface HailStone { + px: number; + py: number; + pz: number; + vx: number; + vy: number; + vz: number; + vector: Vector; +} const isSample = true; export function SolvePartOne(): number { const fileName = isSample ? "/src/days/day24/sample.txt" : "/src/days/day24/full.txt"; - const lines = fs.readFileSync(process.cwd() + fileName, "utf8").split("\n"); + const hailStones: HailStone[] = fs + .readFileSync(process.cwd() + fileName, "utf8") + .split("\n") + .map((l) => { + const data = l.split("@"); + const pos = getAllNumbersInString(data[0]); + const vel = getAllNumbersInString(data[1]); + return { px: pos[0], py: pos[1], pz: pos[2], vx: vel[0], vy: vel[1], vz: vel[2], vector: new Vector(vel[0], vel[1], vel[2]) }; + }); console.log("TBD"); return 0; diff --git a/Typescript/2023/src/days/day24/sample.txt b/Typescript/2023/src/days/day24/sample.txt index e69de29..cbe1492 100644 --- a/Typescript/2023/src/days/day24/sample.txt +++ b/Typescript/2023/src/days/day24/sample.txt @@ -0,0 +1,5 @@ +19, 13, 30 @ -2, 1, -2 +18, 19, 22 @ -1, -1, -2 +20, 25, 34 @ -2, -2, -4 +12, 31, 28 @ -1, -2, -1 +20, 19, 15 @ 1, -5, -3 \ No newline at end of file diff --git a/Typescript/2023/src/main.ts b/Typescript/2023/src/main.ts index 23aec1c..9938d92 100644 --- a/Typescript/2023/src/main.ts +++ b/Typescript/2023/src/main.ts @@ -4,9 +4,9 @@ for (let i = 1; i <= 24; i++) { solvers[i] = require(`./days/day${i.toString().padStart(2, "0")}/day${i.toString().padStart(2, "0")}`); } -const day: number = 23; +const day: number = 24; -if (day >= 1 && day <= 24) { +if (day >= 1 && day <= 25) { const solvePartOne = solvers[day].SolvePartOne; const solvePartTwo = solvers[day].SolvePartTwo; diff --git a/Typescript/2023/src/util/regex.ts b/Typescript/2023/src/util/regex.ts index 35899b1..1c37ac3 100644 --- a/Typescript/2023/src/util/regex.ts +++ b/Typescript/2023/src/util/regex.ts @@ -1,5 +1,5 @@ export function getAllNumbersInString(input: string): number[] { - const numReg = new RegExp("[0-9]+", "g"); + const numReg = new RegExp("-?[0-9]+", "g"); const matches = input.match(numReg)?.map((n) => Number(n)) ?? []; return matches; }