file = open("input", "r") bids = [] hands = [] rating = {"A": 13, "K": 12, "Q": 11, "J": 10, "T": 9, "9": 8, "8": 7, "7": 6, "6": 5, "5": 4, "4": 3, "3": 2, "2": 1} for line in file: count_dict = {} line = line.strip().split() bids.append("") bids.append(line[1].strip()) hands.append(line[0]) for char in line[0]: if count_dict.get(char): count_dict[char] += 1 else: count_dict[char] = 1 hands.append(count_dict) five_of = [] four_of = [] three_of = [] two_pair = [] one_pair = [] high_card = [] full_house = [] for i in range(len(hands)): hand = hands[i] if type(hand) is dict: if len(hand) == 1: five_of.append(hands[i - 1]) five_of.append(hand) five_of.append(bids[i]) continue elif len(hand) == 4: one_pair.append(hands[i - 1]) one_pair.append(hand) one_pair.append(bids[i]) continue elif len(hand) == 5: high_card.append(hands[i - 1]) high_card.append(hand) high_card.append(bids[i]) continue for j in hand: if (len(hand) == 2) and (hand[j] == 2 or hand[j] == 3): full_house.append(hands[i - 1]) full_house.append(hand) full_house.append(bids[i]) break elif hand[j] == 4: four_of.append(hands[i - 1]) four_of.append(hand) four_of.append(bids[i]) break elif len(hand) == 3 and hand[j] == 3: three_of.append(hands[i - 1]) three_of.append(hand) three_of.append(bids[i]) break elif len(hand) == 3 and hand[j] == 2: two_pair.append(hands[i - 1]) two_pair.append(hand) two_pair.append(bids[i]) break all_hands = [five_of, four_of, full_house, three_of, two_pair, one_pair, high_card] specific_rate = len(bids) // 2 blaetter = [] hand_ratings = [] order = ["A", "K", "Q", "J", "T", "9", "8", "7", "6", "5", "4", "3", "2", "1"] my_list = ["KTJJT", "KK677"] def custom_sort(s): return [order.index(c) for c in s] for hand in all_hands: for i in range(1, len(hand)): single_hand = hand[i] val = 0 if type(single_hand) is dict: if len(hand) > 3: blaetter = [] for j in range(0, len(hand), 3): blaetter.append(hand[j]) blaetter.sort(key=custom_sort) else: hand_ratings.append(specific_rate) specific_rate -= 1 if i + 1 < len(hand): hand_ratings.append(hand[i + 1]) continue for i in range(len(blaetter)): idx = hand.index(blaetter[i]) + 2 hand_ratings.append(specific_rate) hand_ratings.append(hand[idx]) specific_rate -= 1 blaetter = [] werte = [] result = 0 for i in range(0, len(hand_ratings), 2): print(hand_ratings[i], hand_ratings[i + 1]) result += int(hand_ratings[i]) * int(hand_ratings[i + 1]) print(result)