Skip to content

Commit 0fa3aa5

Browse files
committed
Stable order
1 parent f2520e8 commit 0fa3aa5

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

20.bstate.swift

+19-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func readInput() -> [Module] {
7575

7676
// Ensure broadcast is at index 0
7777
uniqueNames.remove(broadcast)
78-
let keys = [broadcast] + Array(uniqueNames)
78+
let keys = [broadcast] + (Array(uniqueNames).sorted())
7979

8080
var result = [Module]()
8181
for name in keys {
@@ -156,6 +156,7 @@ func propogate(pulse: Pulse, module: Module) -> ([Pulse], Module)? {
156156
func simulate(modules: inout [Module]) -> (Int, Int) {
157157
let buttonPress = Pulse(value: false, from: -1, to: 0)
158158

159+
showPreamble(modules: modules)
159160

160161
var (ct, cf) = (0, 0)
161162
func count(_ pulse: Pulse) {
@@ -197,6 +198,23 @@ func simulate(modules: inout [Module]) -> (Int, Int) {
197198
return (ct * cf, rxn ?? 0)
198199
}
199200

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+
200218
func show(modules: [Module]) {
201219
if verbose > 1 {
202220
print(modules.map({ $0.description }).joined(separator: " · "))

0 commit comments

Comments
 (0)