1+ const input = Deno . readTextFileSync ( "./day07.txt" ) . trim ( ) . split ( "\n" ) . map ( v => v . split ( "" ) )
2+
3+ let count = 0
4+
5+ const manifolds = deepCopy ( input )
6+ manifolds [ 0 ] [ manifolds [ 0 ] . indexOf ( "S" ) ] = "|"
7+
8+ for ( let row = 1 ; row < manifolds . length ; row ++ ) {
9+ const above = manifolds [ row - 1 ]
10+
11+ for ( const [ column , value ] of manifolds [ row ] . entries ( ) ) {
12+ if ( above [ column ] == "|" ) {
13+ if ( value == "." ) {
14+ manifolds [ row ] [ column ] = "|"
15+ } else if ( value == "^" ) {
16+ count ++
17+ manifolds [ row ] [ column - 1 ] = "|"
18+ manifolds [ row ] [ column + 1 ] = "|"
19+ }
20+ }
21+ }
22+ }
23+
24+ console . log ( count )
25+
26+ const quantumManifolds : ( number | "^" ) [ ] [ ] = deepCopy ( input ) . map ( l => l . map ( v => v == "." ? 0 : "^" ) )
27+ quantumManifolds [ 0 ] [ input [ 0 ] . indexOf ( "S" ) ] = 1
28+
29+ for ( let row = 1 ; row < quantumManifolds . length ; row ++ ) {
30+ const above = quantumManifolds [ row - 1 ]
31+
32+ for ( const [ column , value ] of quantumManifolds [ row ] . entries ( ) ) {
33+ const valueAbove = above [ column ]
34+
35+ if ( typeof valueAbove == "number" ) {
36+ if ( value == "^" ) {
37+ ( quantumManifolds [ row ] [ column - 1 ] as number ) += valueAbove ;
38+ ( quantumManifolds [ row ] [ column + 1 ] as number ) += valueAbove
39+ } else {
40+ ( quantumManifolds [ row ] [ column ] as number ) += valueAbove
41+ }
42+ }
43+ }
44+ }
45+
46+ const paths = ( quantumManifolds . at ( - 1 ) ! as number [ ] ) . reduce ( ( p , c ) => p + c , 0 )
47+
48+ console . log ( paths )
49+
50+ function deepCopy ( a : string [ ] [ ] ) : string [ ] [ ] {
51+ const b : string [ ] [ ] = [ ]
52+ a . forEach ( l => { b . push ( [ ...l ] ) } )
53+ return b
54+ }
0 commit comments