[TASK] Solved Day 2 Part 1
This commit is contained in:
31
functions/src/day2.ts
Normal file
31
functions/src/day2.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import Utils from "./utils";
|
||||
|
||||
class Day2 {
|
||||
static part1(input: string[]): number {
|
||||
|
||||
const forwardMoves = input.filter(s => s.startsWith("forward"))
|
||||
.map(s => this.readUnits(s));
|
||||
const finalForwardPosition = Utils.sum(forwardMoves);
|
||||
|
||||
const depthMovesUp = input.filter(s => s.startsWith("up"))
|
||||
.map(s => this.readUnits(s));
|
||||
const depthMovesDown = input.filter(s => s.startsWith("down"))
|
||||
.map(s => this.readUnits(s));
|
||||
const finalDepthPosition = Utils.sum(depthMovesDown) - Utils.sum(depthMovesUp);
|
||||
|
||||
return finalForwardPosition * finalDepthPosition;
|
||||
}
|
||||
|
||||
static part2(input: string[]): number {
|
||||
|
||||
|
||||
// TODO implement
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static readUnits(input: string): number {
|
||||
return parseInt(input.substr(input.indexOf(' ') + 1));
|
||||
}
|
||||
}
|
||||
|
||||
export default Day2;
|
||||
@@ -2,6 +2,7 @@ import * as functions from "firebase-functions";
|
||||
import Utils from "./utils";
|
||||
import Day1 from "./day1";
|
||||
import {Response} from "firebase-functions";
|
||||
import Day2 from "./day2";
|
||||
|
||||
|
||||
// // Start writing Firebase Functions
|
||||
@@ -23,7 +24,14 @@ export const day = {
|
||||
const input = Utils.parseInput(request);
|
||||
const part1 = Day1.part1(input);
|
||||
const part2 = Day1.part2(input);
|
||||
sendResponse(response, part1, part2);
|
||||
|
||||
}),
|
||||
2: functions.region("europe-west1").https.onRequest((request, response) => {
|
||||
|
||||
const input = Utils.parseInput(request);
|
||||
const part1 = Day2.part1(input);
|
||||
const part2 = Day2.part2(input);
|
||||
sendResponse(response, part1, part2);
|
||||
|
||||
}),
|
||||
|
||||
@@ -12,6 +12,10 @@ class Utils {
|
||||
throw Error("Invalid request");
|
||||
}
|
||||
}
|
||||
|
||||
static sum(values: number[]): number {
|
||||
return values.reduce((a, b) => a + b, 0);
|
||||
}
|
||||
}
|
||||
|
||||
export default Utils;
|
||||
11
input/day/2-example.http
Normal file
11
input/day/2-example.http
Normal file
@@ -0,0 +1,11 @@
|
||||
POST http://localhost:5001/advent-of-code-2021-911a8/europe-west1/day-2
|
||||
Content-Type: text/plain
|
||||
|
||||
forward 5
|
||||
down 5
|
||||
forward 8
|
||||
up 3
|
||||
down 8
|
||||
forward 2
|
||||
|
||||
###
|
||||
1005
input/day/2.http
Normal file
1005
input/day/2.http
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user