aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--day1/index.ts17
-rw-r--r--index.ts7
-rw-r--r--types.d.ts2
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;
diff --git a/index.ts b/index.ts
index 6574f2d..ad8a47d 100644
--- a/index.ts
+++ b/index.ts
@@ -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);
});
diff --git a/types.d.ts b/types.d.ts
index bc99a44..e54f71c 100644
--- a/types.d.ts
+++ b/types.d.ts
@@ -1 +1 @@
-export type ExerciseModuleFunc = (input: string) => string;
+export type ExerciseModuleFunc = (input: string) => Promise<string>;