# read input file and create list of input lines file = open("Day4/day4_input.txt", "r") input = file.read() input_list = input.split('\n') # part 1 points = 0 for card in input_list: winners = 0 winning_nums = [int(i) for i in card.split(':')[1].split('|')[0].split(' ') if i.isdigit()] your_nums = [int(i) for i in card.split(':')[1].split('|')[1].split(' ') if i.isdigit()] for your_num in your_nums: winners += 1 if your_num in winning_nums else 0 points += 2**(winners-1) if winners > 0 else 0 print(points) # part 2 cards = [1]*len(input_list) for ind_card, card in enumerate(input_list): winning_nums = [int(i) for i in card.split(':')[1].split('|')[0].split(' ') if i.isdigit()] your_nums = [int(i) for i in card.split(':')[1].split('|')[1].split(' ') if i.isdigit()] winners = 0 for your_num in your_nums: winners += 1 if your_num in winning_nums else 0 for i in range(0,winners): if ind_card+i+1 < len(input_list): cards[ind_card+i+1] += cards[ind_card] print(sum(cards))