diff options
| -rw-r--r-- | day1/index.ts | 17 | ||||
| -rw-r--r-- | index.ts | 7 | ||||
| -rw-r--r-- | types.d.ts | 2 |
3 files changed, 21 insertions, 5 deletions
diff --git a/day1/index.ts b/day1/index.ts index 2e202ad..93f0ec6 100644 --- a/day1/index.ts +++ b/day1/index.ts @@ -1,7 +1,20 @@ +import { of } from "rxjs"; +import { filter, map } from 'rxjs/operators'; import { ExerciseModuleFunc } from "../types"; -const day1: ExerciseModuleFunc = (input: string) => { - return input; +type Pair<T, K> = [T, K]; + +const day1: ExerciseModuleFunc = async (input: string) => { + const numbers = input.split("\n").map(line => Number(line)); + const obs = of(...numbers).pipe( + map((number, index) => [number, numbers.slice(index)] as Pair<number, number[]>), + map(pair => [pair[0], pair[1].find(elem => pair[0] + elem === 2020)] as Pair<number, number | undefined>), + filter(pair => pair[1] !== undefined), + map(pair => pair[0] * pair[1]), + map(solution => solution.toString()) + ) + + return obs.toPromise(); } export default day1; @@ -11,9 +11,12 @@ const inputText = inputBuffer.toString(); import(modulePath).then(m => { const defaultFunc = m.default as ExerciseModuleFunc; - const result = defaultFunc(inputText); + return defaultFunc(inputText); +}) +.then(result => { console.log("=== RESULT ==="); console.log(result); -}).catch(err => { +}) +.catch(err => { console.error(err); }); @@ -1 +1 @@ -export type ExerciseModuleFunc = (input: string) => string; +export type ExerciseModuleFunc = (input: string) => Promise<string>; |
