import re def check(cards, num): for i in cards: for x in i: for t in range(5): if x[t] == num: x[t] = None #print(cards) def bingo(cards): rv = set() for i in range(len(cards)): counter = 0 for x in cards[i]: # print(x) if x[0] is None and x[1] is None and x[2] is None and x[3] is None and x[4] is None: rv.add(i) for t in range(5): counter = 0 for x in cards[i]: if x[t] is None: counter += 1 if counter == 5: rv.add(i) return list(rv) nums = [4,75,74,31,76,79,27,19,69,46,98,59,83,23,90,52,87,6,11,92,80,51,43,5,94,17,15,67,25,30,48,47,62,71,85,58,60,1,72,99,3,35,42,10,96,49,37,36,8,44,70,40,45,39,0,63,2,78,68,53,50,77,20,55,38,86,54,93,26,88,12,91,95,34,9,14,33,66,41,13,28,57,29,73,56,22,89,21,64,61,32,65,97,84,18,82,81,7,16,24] f = open('input4.txt', 'r') cards = [] card = [] score = 0 for i in f: i = i.strip() if len(i) == 0: cards.append(card) card = list() continue t = list(map(int, re.split('\s+', i))) card.append(t) if len(card) > 0: cards.append(card) for z in nums: check(cards, z) bing = bingo(cards) if len(bing) > 0 and len(cards) > 1: print('Found bingo: ', bing, ' after pulling number ', z, ', cards left: ', len(cards)) for card in reversed(sorted(bing)): cards.pop(card) continue if len(cards) == 1 and len(bing) > 0: for x in cards[0]: for i in x: if i is not None: score += i break print(cards) print(z) print(score*z, ' eöokrggm')