#!/usr/bin/env python3
# -*- coding: utf-8 -*-

file = "./input.txt"
# file = "./ex.txt"
from time import time
import re
start_time = time()

def check_machine(m:dict) -> int:
    min_token = 900
    solution_found = False
    for a in range(101):
        for b in range(101):
            if ((m['ba_x'] * a) + (m['bb_x'] * b) == m['p_x'] and
                (m['ba_y'] * a) + (m['bb_y'] * b) == m['p_y'] and
                    (a*3)+b < min_token):
                    solution_found = True
                    min_token = (a*3)+b
    if solution_found:
        return min_token
    else:
        return 0


if __name__ == "__main__":
    input_dict = {}
    m_count = 0
    input_file = open(file, "r")
    for line in input_file:
        line = line.strip()
        if line == "":
            continue
        if 'Button A' in line:
            pat_b_a = r'A\: X\+(\d+), Y\+(\d+)'
            match = re.search(pat_b_a, line)
            input_dict[f'M_{m_count}'] = {'ba_x' :int(match.group(1))}
            input_dict[f'M_{m_count}']['ba_y'] = int(match.group(2))
        elif 'Button B' in line:
            pat_b_b = r'B\: X\+(\d+), Y\+(\d+)'
            match = re.search(pat_b_b, line)
            input_dict[f'M_{m_count}']['bb_x'] = int(match.group(1))
            input_dict[f'M_{m_count}']['bb_y'] = int(match.group(2))
        elif 'Prize' in line:
            pat_p = r'Prize\: X\=(\d+), Y\=(\d+)'
            match = re.search(pat_p, line)
            input_dict[f'M_{m_count}']['p_x'] = int(match.group(1))
            input_dict[f'M_{m_count}']['p_y'] = int(match.group(2))
            m_count += 1
    input_file.close()

    solution = 0
    for key in input_dict.keys():
        solution += check_machine(input_dict[key])


    print(input_dict)
    print(f'Solution: {solution}')
    print(f'Runtime: {time()-start_time:.2f} s')