Initial commit: AoC solutions 2023-2025
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import re
|
||||
|
||||
class T:
|
||||
def __init__(self, id, winning, card):
|
||||
self.id = id
|
||||
self.winning = winning
|
||||
self.card = card
|
||||
self.instances = 1
|
||||
self.intersect = len((list)(set(winning) & set(card)))
|
||||
|
||||
def addInstance(self):
|
||||
self.instances += 1
|
||||
|
||||
|
||||
def main():
|
||||
with open("4-input.txt", 'r') as file:
|
||||
array = []
|
||||
for line in file:
|
||||
array.append(parseLine(line))
|
||||
for i, card in enumerate(array):
|
||||
for ii in range(0, card.instances):
|
||||
for iii in range(i+1, i + 1 + card.intersect):
|
||||
array[iii].addInstance()
|
||||
instancesArr = list(map(lambda x: x.instances, array))
|
||||
|
||||
print(sum(instancesArr))
|
||||
|
||||
def parseLine(s: str):
|
||||
idSplit = s.split(":")
|
||||
id = getID(idSplit[0])
|
||||
|
||||
cardSplit = idSplit[1].split("|")
|
||||
winning = re.findall(r'\d+', cardSplit[0])
|
||||
card = re.findall(r'\d+', cardSplit[1])
|
||||
cardInstance = T(id, winning, card)
|
||||
return cardInstance
|
||||
|
||||
def getColor(s: str, color: str):
|
||||
split = s.strip().split(" ")
|
||||
if(color == split[1]):
|
||||
return int(split[0])
|
||||
return 0
|
||||
|
||||
def getID(split1):
|
||||
digs = re.findall("\d+", split1)
|
||||
id = digs[0]
|
||||
return int(id)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user