549f0c4382
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
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() |