diff --git a/day20/sol.tcl b/day20/sol.tcl index 012b8c9..f6d61a5 100755 --- a/day20/sol.tcl +++ b/day20/sol.tcl @@ -63,6 +63,10 @@ proc pulse {init {debug 0}} { set pulses {} foreach {from n value} $copy { incr count($value) + if {$n eq "rx" && $value == 0} { + global solved + set solved 1 + } switch $type($n) { flip { if {$value == 0} { @@ -106,11 +110,29 @@ proc solve input { set solved 0 for {set i 1} {$i <= 1000} {incr i} { pulse broadcaster + if {$solved} { + puts "rx $i" + } } puts "$count(0)" puts $count(1) puts [expr {$count(0) * $count(1)}] + + global type + if {![info exists type(rx)]} return + + while {!$solved} { + pulse broadcaster + incr i + if {$solved} { + puts "rx $i" + break + } + if {$i % 1000 == 0} { + puts "\[$i\]" + } + } } solve stdin