Skip to content

Commit 4cc1bbe

Browse files
committed
Factor out parse function
1 parent 67c0928 commit 4cc1bbe

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

day24/src/day24.cr

+12-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@ BITS = 1
33
alias Vars = Array(Array(String))
44
alias Circuit = Array(Tuple(Array(String), String))
55

6+
def parse_input(raw : String) : Tuple(Vars, Circuit)
7+
raw_vars, raw_circuit = raw.split("\n\n").map { |r| r.lines }
8+
vars = raw_vars.map { |r| r.split(": ") }
9+
circuit = raw_circuit.map do |r|
10+
raw_expr, res = r.split(" -> ")
11+
expr = raw_expr.split(' ')
12+
{expr, res}
13+
end
14+
{vars, circuit}
15+
end
16+
617
def translate_to_z3(vars : Vars, circuit : Circuit) : String
718
[
819
*vars.map { |v| "(declare-const #{v[0]} (_ BitVec #{BITS}))" },
@@ -58,14 +69,7 @@ positionals = ARGV.select { |a| !flags.includes?(a) }
5869

5970
path = positionals[0]
6071
raw = File.read(path)
61-
62-
raw_vars, raw_circuit = raw.split("\n\n").map { |r| r.lines }
63-
vars = raw_vars.map { |r| r.split(": ") }
64-
circuit = raw_circuit.map do |r|
65-
raw_expr, res = r.split(" -> ")
66-
expr = raw_expr.split(' ')
67-
{expr, res}
68-
end
72+
vars, circuit = parse_input(raw)
6973

7074
if flags.includes?("--dump-dot")
7175
puts translate_to_dot(vars, circuit)

0 commit comments

Comments
 (0)