From e60bfbf8c4cea60ab05154f9fe05651332215aa2 Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Tue, 9 Dec 2025 08:39:03 +0100 Subject: [PATCH] 2025 day 9 part 1 in TypeScript --- 2025/day09/.gitignore | 1 + 2025/day09/package-lock.json | 29 +++++++++++++++++++++++++++ 2025/day09/package.json | 6 ++++++ 2025/day09/sample.txt | 8 ++++++++ 2025/day09/solve.ts | 39 ++++++++++++++++++++++++++++++++++++ 5 files changed, 83 insertions(+) create mode 100644 2025/day09/.gitignore create mode 100644 2025/day09/package-lock.json create mode 100644 2025/day09/package.json create mode 100644 2025/day09/sample.txt create mode 100755 2025/day09/solve.ts diff --git a/2025/day09/.gitignore b/2025/day09/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/2025/day09/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/2025/day09/package-lock.json b/2025/day09/package-lock.json new file mode 100644 index 0000000..dd4f46a --- /dev/null +++ b/2025/day09/package-lock.json @@ -0,0 +1,29 @@ +{ + "name": "day09", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@types/node": "^24.10.2" + } + }, + "node_modules/@types/node": { + "version": "24.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.2.tgz", + "integrity": "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/2025/day09/package.json b/2025/day09/package.json new file mode 100644 index 0000000..5384a3c --- /dev/null +++ b/2025/day09/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "devDependencies": { + "@types/node": "^24.10.2" + } +} diff --git a/2025/day09/sample.txt b/2025/day09/sample.txt new file mode 100644 index 0000000..c8563ea --- /dev/null +++ b/2025/day09/sample.txt @@ -0,0 +1,8 @@ +7,1 +11,1 +11,7 +9,7 +9,5 +2,5 +2,3 +7,3 diff --git a/2025/day09/solve.ts b/2025/day09/solve.ts new file mode 100755 index 0000000..70008d3 --- /dev/null +++ b/2025/day09/solve.ts @@ -0,0 +1,39 @@ +#!/usr/bin/env ts-node +import * as fs from 'fs'; +import { exit } from 'process'; + +if (process.argv.length < 3) { + console.log("Usage: " + process.argv0 + " " + process.argv[1] + " INPUT_FILE"); + exit(10); +} + +const input_file = fs.readFileSync(process.argv[2], "utf-8"); +const lines = input_file.trim().split("\n"); + +class Point { + x: number; + y: number; + + constructor(x: number, y: number) { + this.x = x; + this.y = y; + } +} + +const points = lines.map(line => { + const [x, y] = line.split(","); + return new Point(+x, +y); +}); + +let max_size = 0; + +for (let i = 0; i < points.length; ++i) { + for (let j = i + 1; j < points.length; ++j) { + const width = Math.abs(points[i].x - points[j].x) + 1; + const height = Math.abs(points[i].y - points[j].y) + 1; + + max_size = Math.max(max_size, width * height); + } +} + +console.log("Part 1:", max_size);