2023 dec 12th
This commit is contained in:
parent
1233f19712
commit
8a2c451747
1 changed files with 56 additions and 0 deletions
56
Python/2023/12/main.py
Normal file
56
Python/2023/12/main.py
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
import math
|
||||||
|
|
||||||
|
input = open("input", 'r')
|
||||||
|
|
||||||
|
data = []
|
||||||
|
|
||||||
|
for i, line in enumerate(input):
|
||||||
|
line = line.rstrip()
|
||||||
|
springs, groups = line.split(" ")
|
||||||
|
data.append((springs + ".", [int(v) for v in groups.split(",")]))
|
||||||
|
|
||||||
|
arrangements = []
|
||||||
|
|
||||||
|
SS = {}
|
||||||
|
def getArrangements(springs, groups, spring, group, length):
|
||||||
|
if spring == len(springs):
|
||||||
|
if group == len(groups): # Valid solution
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
pos = (spring, group, length)
|
||||||
|
if pos in SS:
|
||||||
|
return SS[pos]
|
||||||
|
|
||||||
|
arrangements = 0
|
||||||
|
if springs[spring]=="." or springs[spring]=="?":
|
||||||
|
if length == 0:
|
||||||
|
arrangements += getArrangements(springs, groups, spring+1,
|
||||||
|
group, length)
|
||||||
|
elif group < len(groups) and groups[group] == length:
|
||||||
|
arrangements += getArrangements(springs, groups, spring+1,
|
||||||
|
group+1, 0)
|
||||||
|
if springs[spring]=="#" or springs[spring]=="?":
|
||||||
|
arrangements += getArrangements(springs, groups, spring+1,
|
||||||
|
group, length+1)
|
||||||
|
SS[pos] = arrangements
|
||||||
|
return arrangements
|
||||||
|
|
||||||
|
for springs, groups in data:
|
||||||
|
arrangements.append(getArrangements(springs, groups, 0, 0, 0))
|
||||||
|
SS = {}
|
||||||
|
|
||||||
|
print(sum(arrangements))
|
||||||
|
|
||||||
|
data2 = [("?".join([springs[:-1]] * 5) + ".", groups * 5)
|
||||||
|
for springs, groups in data]
|
||||||
|
|
||||||
|
print(data2[0])
|
||||||
|
|
||||||
|
arrangements = []
|
||||||
|
|
||||||
|
for springs, groups in data2:
|
||||||
|
arrangements.append(getArrangements(springs, groups, 0, 0, 0))
|
||||||
|
SS = {}
|
||||||
|
|
||||||
|
print(sum(arrangements))
|
||||||
Loading…
Add table
Add a link
Reference in a new issue