From 49f1df9dc23f7e1e25a1fa9978c0ad9f3b169320 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Tue, 12 Dec 2023 11:51:43 +0100 Subject: Initial group approach --- 2023/12/solve.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 2023/12/solve.py (limited to '2023/12/solve.py') diff --git a/2023/12/solve.py b/2023/12/solve.py new file mode 100644 index 0000000..bd9da6d --- /dev/null +++ b/2023/12/solve.py @@ -0,0 +1,43 @@ +L = [ + (p := l.strip().split(" ")) and (p[0], [int(n) for n in p[1].split(",")]) + for l in open("input").readlines() +] + + +def groups(pat): + gs = [] + c = [] + for p in pat: + if p in "#?": + c.append(p) + elif c: + gs.append(c) + c = [] + return gs[::-1] + + +def arrangements(pat, sol): + arr = 1 + + gs = groups(pat) + for i, g in enumerate(gs): + if len(g) == sol[0]: # ???.[#??] 1,1,[3] + del sol[0] + continue + if g.count("#") == 0: + if len(g) == len(sol) + 1 and len(sol) == sum(sol): # [???].### [1,1],3 + break + # if len(g) > len(sol) + print(g, sol) + + return arr + + +def part1(): + res = 0 + for pat, sol in L: + res += arrangements(f".{pat}.", sol[::-1]) + print(res) + + +part1() -- cgit v1.2.3