Первая - старая версия функции. Вторая - новая. Изменились только ключи в словаре, так? Но почему же ошибки.....


        nonlocal n, catched, list_of_results_d
        top_combo = scored_three_card.get(top_multi)
        top_royal = toproyalty_prog(top_combo) if is_prog else toproyalty_norm(top_combo)

        # Предвычисляем все валидные комбинации для пар карт
        valid_pairs = {}

        for a, b in combinations(remaining_cards_encoded_here, 2):
            best_royal = -6

            # Вариант 1: a в mid, b в bot
            mid_score_1 = scored_non_flush[a * mid_multi]
            bot_score_1 = scored_non_flush[b * bot_multi]

            if bot_score_1 <= mid_score_1 <= top_combo:
                mid_royal = (
                    0 if mid_score_1 > 2467 else 2 if mid_score_1 > 1609 else 4 if mid_score_1 > 1599 else 8 if mid_score_1 > 322 else 12 if mid_score_1 > 166 else 20 if mid_score_1 > 10 else 30 if mid_score_1 > 1 else 50)

                bot_royal = (0 if bot_score_1 > 1609 else 2 if bot_score_1 > 1599 else 4 if bot_score_1 > 322 else 6 if bot_score_1 > 166 else 10 if bot_score_1 > 10 else 15 if bot_score_1 > 1 else 25)

                royal = top_royal + mid_royal + bot_royal
                if royal > best_royal:
                    best_royal = royal

            # Вариант 2: b в mid, a в bot
            mid_score_2 = scored_non_flush[b * mid_multi]
            bot_score_2 = scored_non_flush[a * bot_multi]

            if bot_score_2 <= mid_score_2 <= top_combo:
                mid_royal = (
                    0 if mid_score_2 > 2467 else 2 if mid_score_2 > 1609 else 4 if mid_score_2 > 1599 else 8 if mid_score_2 > 322 else 12 if mid_score_2 > 166 else 20 if mid_score_2 > 10 else 30 if mid_score_2 > 1 else 50)

                bot_royal = (0 if bot_score_2 > 1609 else 2 if bot_score_2 > 1599 else 4 if bot_score_2 > 322 else 6 if bot_score_2 > 166 else 10 if bot_score_2 > 10 else 15 if bot_score_2 > 1 else 25)

                royal = top_royal + mid_royal + bot_royal
                if royal > best_royal:
                    best_royal = royal

            # Сохраняем лучший результат для этой пары
            if best_royal > -6:
                # Создаем уникальный ключ для пары (меньший * большой)
                pair_key = min(a, b) * 1000000 + max(a, b)
                valid_pairs[pair_key] = best_royal

        # Проверяем, есть ли вообще валидные комбинации
        if not valid_pairs:
            catched = True
            dict_of_total_good[tuple(tuple(x) for x in results[n])] = (-6, 0)
            n += 1
            return

        # Для каждой тройки карт находим максимальное роялти
        for rand in combinations_my:
            best_royal = -6

            # Проверяем пару rand[0], rand[1] (третья карта rand[2] остается)
            pair_key = min(rand[0], rand[1]) * 1000000 + max(rand[0], rand[1])
            if pair_key in valid_pairs:
                royal = valid_pairs[pair_key]
                if royal > best_royal:
                    best_royal = royal

            # Проверяем пару rand[0], rand[2] (третья карта rand[1] остается)
            pair_key = min(rand[0], rand[2]) * 1000000 + max(rand[0], rand[2])
            if pair_key in valid_pairs:
                royal = valid_pairs[pair_key]
                if royal > best_royal:
                    best_royal = royal

            # Проверяем пару rand[1], rand[2] (третья карта rand[0] остается)
            pair_key = min(rand[1], rand[2]) * 1000000 + max(rand[1], rand[2])
            if pair_key in valid_pairs:
                royal = valid_pairs[pair_key]
                if royal > best_royal:
                    best_royal = royal

            list_of_results_d.append(best_royal)

  def process_case_3_4_4():
        nonlocal n, catched, list_of_results_d
        top_combo = scored_three_card.get(top_multi)
        top_royal = toproyalty_prog(top_combo) if is_prog else toproyalty_norm(top_combo)

        # Предвычисляем все валидные комбинации для пар карт
        valid_pairs = {}

        for a, b in combinations(remaining_cards_encoded_here, 2):
            best_royal = -6

            # Вариант 1: a в mid, b в bot
            mid_score_1 = scored_non_flush[a * mid_multi]
            bot_score_1 = scored_non_flush[b * bot_multi]

            if bot_score_1 <= mid_score_1 <= top_combo:
                mid_royal = (0 if mid_score_1 > 2467 else 2 if mid_score_1 > 1609 else 4 if mid_score_1 > 1599 else 8 if mid_score_1 > 322 else 12 if mid_score_1 > 166 else 20 if mid_score_1 > 10 else 30 if mid_score_1 > 1 else 50)

                bot_royal = (0 if bot_score_1 > 1609 else 2 if bot_score_1 > 1599 else 4 if bot_score_1 > 322 else 6 if bot_score_1 > 166 else 10 if bot_score_1 > 10 else 15 if bot_score_1 > 1 else 25)

                royal = top_royal + mid_royal + bot_royal
                if royal > best_royal:
                    best_royal = royal

            # Вариант 2: b в mid, a в bot
            mid_score_2 = scored_non_flush[b * mid_multi]
            bot_score_2 = scored_non_flush[a * bot_multi]

            if bot_score_2 <= mid_score_2 <= top_combo:
                mid_royal = (0 if mid_score_2 > 2467 else 2 if mid_score_2 > 1609 else 4 if mid_score_2 > 1599 else 8 if mid_score_2 > 322 else 12 if mid_score_2 > 166 else 20 if mid_score_2 > 10 else 30 if mid_score_2 > 1 else 50)

                bot_royal = (0 if bot_score_2 > 1609 else 2 if bot_score_2 > 1599 else 4 if bot_score_2 > 322 else 6 if bot_score_2 > 166 else 10 if bot_score_2 > 10 else 15 if bot_score_2 > 1 else 25)

                royal = top_royal + mid_royal + bot_royal
                if royal > best_royal:
                    best_royal = royal

            # Сохраняем лучший результат для этой пары
            if best_royal > -6:
                # Создаем уникальный ключ для пары (меньший * большой)
                pair_key = a * b
                valid_pairs[pair_key] = best_royal

        # Проверяем, есть ли вообще валидные комбинации
        if not valid_pairs:
            catched = True
            dict_of_total_good[tuple(tuple(x) for x in results[n])] = (-6, 0)
            n += 1
            return

        # Для каждой тройки карт находим максимальное роялти
        for rand in combinations_my:
            best_royal = -6

            # Проверяем пару rand[0], rand[1] (третья карта rand[2] остается)
            pair_key = rand[0] * rand[1]
            if pair_key in valid_pairs:
                royal = valid_pairs[pair_key]
                if royal > best_royal:
                    best_royal = royal

            # Проверяем пару rand[0], rand[2] (третья карта rand[1] остается)
            pair_key = rand[0] * rand[2]
            if pair_key in valid_pairs:
                royal = valid_pairs[pair_key]
                if royal > best_royal:
                    best_royal = royal

            # Проверяем пару rand[1], rand[2] (третья карта rand[0] остается)
            pair_key =rand[1] * rand[2]
            if pair_key in valid_pairs:
                royal = valid_pairs[pair_key]
                if royal > best_royal:
                    best_royal = royal

            list_of_results_d.append(best_royal)