File tree 1 file changed +31
-3
lines changed
1 file changed +31
-3
lines changed Original file line number Diff line number Diff line change @@ -173,10 +173,38 @@ func show(modules: Modules, states: [String: State]) {
173
173
}
174
174
175
175
func analyze( modules: Modules ) -> Int {
176
- return 0
176
+ guard modules [ " rx " ] != nil else { return 0 }
177
+
178
+ var memo : [ String : Int ] = [ : ]
179
+ func lowAfter( name: String ) -> Int {
180
+ if let m = memo [ name] { return m }
181
+
182
+ let r : Int
183
+
184
+ let module = modules [ name] !
185
+ print ( " finding low after for \( name) \( module) " )
186
+ switch module. type {
187
+ case nil :
188
+ r = module. inputs. map ( { lowAfter ( name: $0) } ) . min ( ) !
189
+ case . broadcast:
190
+ r = 1
191
+ case . flip:
192
+ r = module. inputs. map ( { lowAfter ( name: $0) } ) . min ( ) !
193
+ case . conjunction:
194
+ r = module. inputs. map ( { lowAfter ( name: $0) } ) . min ( ) !
195
+ }
196
+
197
+ memo [ name] = r
198
+ return r
199
+ }
200
+
201
+ let r = lowAfter ( name: " rx " )
202
+ print ( memo)
203
+ return r
177
204
}
178
205
179
206
let modules = readInput ( )
180
- let p1 = simulate ( modules: modules, times: 1000 )
207
+ // let p1 = simulate(modules: modules, times: 1000)
181
208
let p2 = analyze ( modules: modules)
182
- print ( p1, p2)
209
+ print ( p2)
210
+ // print(p1, p2)
You can’t perform that action at this time.
0 commit comments