aboutsummaryrefslogtreecommitdiffstats
path: root/day3/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'day3/index.ts')
-rw-r--r--day3/index.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/day3/index.ts b/day3/index.ts
new file mode 100644
index 0000000..6dd8168
--- /dev/null
+++ b/day3/index.ts
@@ -0,0 +1,31 @@
+import { Observable, of } from "rxjs";
+import { concatAll, count, filter, map, take, tap } from 'rxjs/operators';
+import { ExerciseModuleFunc } from "../types";
+
+type Coords = [number, number];
+
+const day3: ExerciseModuleFunc = async (input: string) => {
+ const lines = input.split("\n");
+ const my = lines.length;
+ const mx = lines[0].length;
+
+ const isTree = (x: number, y: number): boolean => lines[y][x % mx] === "#";
+
+ const indexObs = new Observable<Coords>(sub => {
+ for (let y = 0, x = 0; y < my; y += 1, x += 3) {
+ if (isTree(x, y)) {
+ sub.next([x, y]);
+ }
+ }
+ sub.complete();
+ })
+
+ const prom1 = indexObs.pipe(
+ tap(console.log),
+ count()
+ ).toPromise();
+
+ return Promise.all([prom1]);
+}
+
+export default day3;