Day 2 complete!

Change-Id: Id4e26fb1f393e7ad6af9f7f928ba126830cf37ab
Reviewed-on: https://git.clicks.codes/c/Coded/AoC2023/+/97
diff --git a/day 2/index.ts b/day 2/index.ts
new file mode 100644
index 0000000..71dc021
--- /dev/null
+++ b/day 2/index.ts
@@ -0,0 +1,83 @@
+import { readFileSync } from 'fs'
+
+interface Game {
+    id: number,
+    red: number,
+    blue: number,
+    green: number
+}
+
+const input: string[] | Game[] = readFileSync('./input.txt').toString().split('\n');
+
+function getCubes(string: string, color?: 'red' | 'green' | 'blue'): number {
+    let regexp: RegExp;
+    switch (color) {
+        case 'red': {
+            regexp = /(\d+) red/g;
+            break;
+        }
+        case 'green': {
+            regexp = /(\d+) green/g;
+            break;
+        }
+        case 'blue': {
+            regexp = /(\d+) blue/g;
+            break;
+        }
+        default: {
+            regexp = /Game (\d+):/g;
+            break;
+        }
+    }
+    const matches = string.matchAll(regexp)
+    let max = 0;
+    for (const match of matches) {
+        if(parseInt(match[1]) > max) max = parseInt(match[1])
+    }
+
+    return max
+
+}
+
+const formatted = input.map(game => {
+    
+    const id = getCubes(game)
+    const red = getCubes(game, 'red')
+    const blue = getCubes(game, 'blue')
+    const green = getCubes(game, 'green')
+
+    return {
+        id,
+        red,
+        green,
+        blue
+    } as Game
+})
+
+const maxes = {
+    red: 12,
+    green: 13,
+    blue: 14
+};
+
+// Part One
+((games: Game[]) => {
+    let sum = 0;
+    for(const game of games) {
+        if(
+            game.red <= maxes.red &&
+            game.blue <= maxes.blue &&
+            game.green <= maxes.green
+        ) sum += game.id
+    }
+    console.log(sum)
+})(formatted);
+
+//Part Two
+((games: Game[]) => {
+    let sum = 0;
+    for(const game of games) {
+        sum += game.red * game.green * game.blue
+    }
+    console.log(sum)
+})(formatted);
\ No newline at end of file