From b0324289066876915efb84a133eca039d8e8c8ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Sun, 17 Dec 2023 23:17:03 +0100 Subject: =?UTF-8?q?=C5=A1ola?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prog/aoc/23/12/1.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 prog/aoc/23/12/1.py (limited to 'prog/aoc/23/12/1.py') diff --git a/prog/aoc/23/12/1.py b/prog/aoc/23/12/1.py new file mode 100755 index 0000000..7e07935 --- /dev/null +++ b/prog/aoc/23/12/1.py @@ -0,0 +1,53 @@ +#!/usr/bin/python3 +springs = [] +try: + while True: + s = input() + springs.append((s.split(" ")[0], list(map(int, s.split(" ")[1].split(","))))) +except EOFError: + pass +def counts(vhod): + s = vhod + "$" + prev = None + r = [] + run = 0 + for c in s: + if prev == None: + prev = c + run = 1 + continue + if c == prev: + run += 1 + continue + if prev == "#": + r.append(run) + prev = c + run = 1 + return r +""" +for spring in springs: + print(counts(spring[0]), spring[1]) +""" +def possibilities(x): + r = 0 + countq = x[0].count("?") + for bits in range(2**countq): + copy = x[0] + for i in range(countq): + if bits & (1 << i): + copy = copy.replace("?", ".", 1) + else: + copy = copy.replace("?", "#", 1) + if counts(copy) == x[1]: + r += 1 + return r +def possibilities_serial(array): + s = 0 + for element in array: + s += possibilities(element) + return s +batch_size = 10 +batches = [springs[x:x+batch_size] for x in range(0, len(springs), batch_size)] +from multiprocessing import Pool +with Pool(len(batches)) as p: + print(sum(p.map(possibilities_serial, batches))) -- cgit v1.2.3