@@ -75,7 +75,7 @@ func readInput() -> [Module] {
75
75
76
76
// Ensure broadcast is at index 0
77
77
uniqueNames. remove ( broadcast)
78
- let keys = [ broadcast] + Array( uniqueNames)
78
+ let keys = [ broadcast] + ( Array ( uniqueNames) . sorted ( ) )
79
79
80
80
var result = [ Module] ( )
81
81
for name in keys {
@@ -156,6 +156,7 @@ func propogate(pulse: Pulse, module: Module) -> ([Pulse], Module)? {
156
156
func simulate( modules: inout [ Module ] ) -> ( Int , Int ) {
157
157
let buttonPress = Pulse ( value: false , from: - 1 , to: 0 )
158
158
159
+ showPreamble ( modules: modules)
159
160
160
161
var ( ct, cf) = ( 0 , 0 )
161
162
func count( _ pulse: Pulse ) {
@@ -197,6 +198,23 @@ func simulate(modules: inout [Module]) -> (Int, Int) {
197
198
return ( ct * cf, rxn ?? 0 )
198
199
}
199
200
201
+ func showPreamble( modules: [ Module ] ) {
202
+ func padn( _ s: String , n: Int ) -> String {
203
+ String ( ( s + " --------------------- " ) . prefix ( n) )
204
+ }
205
+ if verbose == 1 {
206
+ var names = [ String] ( )
207
+ for m in modules {
208
+ switch m {
209
+ case . flip( let name, _, _) : names. append ( padn ( name, n: 2 ) )
210
+ case . conjunction( let name, let n, _, _) : names. append ( padn ( name, n: max ( n + 1 , 2 ) ) )
211
+ default : continue
212
+ }
213
+ }
214
+ print ( names. joined ( separator: " " ) )
215
+ }
216
+ }
217
+
200
218
func show( modules: [ Module ] ) {
201
219
if verbose > 1 {
202
220
print ( modules. map ( { $0. description } ) . joined ( separator: " · " ) )
0 commit comments