diff --git a/07/07-2.py b/07/07-2.py new file mode 100644 index 0000000..c2b9937 --- /dev/null +++ b/07/07-2.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +card_order = ["A", "K", "Q", "T", "9", "8", "7", "6", "5", "4", "3", "2", "J"] +hand_order = ["Five", "Four", "Full", "Three", "TwoPair", "Pair", "HighCard"] +inp = [] + + +def card_sort(e): + return [card_order.index(c) for c in e] + + +input_file = open("input", "r") +for line in input_file: + line = line.strip().split() + hand = [] + for b in line[0]: + hand.append(b) + inp.append([hand, line[1]]) +input_file.close() + +# for i in inp: +# print(i) + + +def hand_type(s): + joker = s.count("J") + for card in card_order: + if s.count(card)+joker == 5: + return "Five", s + for card in card_order: + if s.count(card)+joker == 4 and card != "J": + return "Four", s + for card in card_order: + if s.count(card)+joker == 3 and card != "J": + for cc in card_order: + if cc != card and s.count(cc) == 2 and cc != "J": + return "Full", s + return "Three", s + for card in card_order: + if s.count(card)+joker == 2 and card != "J": + for cc in card_order: + if cc != card and s.count(cc) == 2 and cc != "J": + return "TwoPair", s + return "Pair", s + return "High", s + + +typed_inp = [] +for i in inp: + ty = hand_type(i[0]) + typed_inp.append([ty[0], ty[1], i[1]]) + + +# for i in typed_inp: +# print(i) + +high_cards = [] +pair_cards = [] +two_pair_cards = [] +three_cards = [] +full_cards = [] +four_cards = [] +five_cards = [] + +hand_dic = {} + +for t in typed_inp: + hand = "".join(t[1]) + hand_dic[hand] = int(t[2]) + if t[0] == "High": + high_cards.append(hand) + elif t[0] == "Pair": + pair_cards.append(hand) + elif t[0] == "TwoPair": + two_pair_cards.append(hand) + elif t[0] == "Three": + three_cards.append(hand) + elif t[0] == "Full": + full_cards.append(hand) + elif t[0] == "Four": + four_cards.append(hand) + elif t[0] == "Five": + five_cards.append(hand) + else: + print("Da ging was schief", t) + +five_cards.sort(key=card_sort, reverse=True) +four_cards.sort(key=card_sort, reverse=True) +full_cards.sort(key=card_sort, reverse=True) +three_cards.sort(key=card_sort, reverse=True) +two_pair_cards.sort(key=card_sort, reverse=True) +pair_cards.sort(key=card_sort, reverse=True) +high_cards.sort(key=card_sort, reverse=True) + +solution = 0 +i = 0 +print("High -----------------------------------------") +for card in high_cards: + i += 1 + solution += i*hand_dic[card] + print(i, card, hand_dic[card]) +print("Pair -----------------------------------------") +for card in pair_cards: + i += 1 + solution += i*hand_dic[card] + print(i, card, hand_dic[card]) +print("Two Pair -----------------------------------------") +for card in two_pair_cards: + i += 1 + solution += i*hand_dic[card] + print(i, card, hand_dic[card]) +print("ThreeCards -----------------------------------------") +for card in three_cards: + i += 1 + solution += i*hand_dic[card] + print(i, card, hand_dic[card]) +print("FullHouse -----------------------------------------") +for card in full_cards: + i += 1 + solution += i*hand_dic[card] + print(i, card, hand_dic[card]) +print("FourCards -----------------------------------------") +for card in four_cards: + i += 1 + solution += i*hand_dic[card] + print(i, card, hand_dic[card]) +print("FiveCards -----------------------------------------") +for card in five_cards: + i += 1 + solution += i*hand_dic[card] + print(i, card, hand_dic[card]) + +print() +print(f"Lösung: {solution}")