From e7104941707dc4d509b24b14432fefce6bfa1b90 Mon Sep 17 00:00:00 2001 From: Bas Dado Date: Wed, 1 Dec 2021 23:57:22 +0100 Subject: [PATCH] [TASK] Finished Day 1 --- functions/.eslintrc.js | 2 +- functions/src/day1.ts | 14 ++++++++++++++ functions/src/index.ts | 11 ++++++----- functions/src/utils.ts | 8 +++----- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/functions/.eslintrc.js b/functions/.eslintrc.js index ff21277..527243c 100644 --- a/functions/.eslintrc.js +++ b/functions/.eslintrc.js @@ -9,7 +9,7 @@ module.exports = { "plugin:import/errors", "plugin:import/warnings", "plugin:import/typescript", - "google", + // "google", "plugin:@typescript-eslint/recommended", ], parser: "@typescript-eslint/parser", diff --git a/functions/src/day1.ts b/functions/src/day1.ts index 537bc82..a60b608 100644 --- a/functions/src/day1.ts +++ b/functions/src/day1.ts @@ -9,6 +9,20 @@ class Day1 { } return res; } + + static part2(input: string[]): number { + + const values = input.map(s => parseInt(s)); + let res = 0; + let previousSum = Math.max(...values) * 3; + for (let i = 2; i < values.length; i++) { + const sum = values[i - 2] + values[i - 1] + values[i]; + if (sum > previousSum) res++; + previousSum = sum; + } + + return res; + } } export default Day1; \ No newline at end of file diff --git a/functions/src/index.ts b/functions/src/index.ts index cf2dad3..9b2d5e1 100644 --- a/functions/src/index.ts +++ b/functions/src/index.ts @@ -13,22 +13,23 @@ import {Response} from "firebase-functions"; // }); interface DayResult { - part1: any; - part2: any; + part1: string | number; + part2: string | number; } export const day = { - 1: functions.region('europe-west1').https.onRequest((request, response) => { + 1: functions.region("europe-west1").https.onRequest((request, response) => { const input = Utils.parseInput(request); const part1 = Day1.part1(input); + const part2 = Day1.part2(input); - sendResponse(response, part1, 0); + sendResponse(response, part1, part2); }), } -function sendResponse(response: Response, part1: any, part2: any) { +function sendResponse(response: Response, part1: string | number, part2: string | number) { const res: DayResult = { part1, part2 }; response.send(res); diff --git a/functions/src/utils.ts b/functions/src/utils.ts index 961be9d..2b96e5f 100644 --- a/functions/src/utils.ts +++ b/functions/src/utils.ts @@ -1,18 +1,16 @@ -import {Request} from "firebase-functions/lib/common/providers/https"; +import { Request } from "firebase-functions"; class Utils { static parseInput(request: Request): string[] { const body = request.body; - if (typeof body === 'string') { - return body.split('\n'); + if (typeof body === "string") { + return body.split("\n"); } else if (body.constructor === Array) { return body; } else { throw Error("Invalid request"); } - - } }