{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":84795,"databundleVersionId":11281725,"sourceType":"competition"},{"sourceId":166236,"sourceType":"modelInstanceVersion","isSourceIdPinned":true,"modelInstanceId":141449,"modelId":164048}],"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-03-20T13:13:44.571728Z","iopub.execute_input":"2025-03-20T13:13:44.572287Z","iopub.status.idle":"2025-03-20T13:13:49.597889Z","shell.execute_reply.started":"2025-03-20T13:13:44.572239Z","shell.execute_reply":"2025-03-20T13:13:49.596607Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import random\nfrom typing import List, Tuple\n\n# Função para calcular a pontuação\ndef calculate_score(n_correct: int, n_wrong: int, n_skipped: int) -> float:\n    \"\"\"\n    Calcula a pontuação com base no número de problemas resolvidos corretamente,\n    problemas com falha e problemas ignorados.\n    \"\"\"\n    if n_correct == 0:\n        return -1  # Penalidade máxima se nenhum problema for resolvido corretamente\n    incorrect_score = -1\n    skip_score = -1e-4\n    return (\n        n_correct + n_wrong * incorrect_score + n_skipped * skip_score\n    ) / (n_correct + n_wrong + n_skipped)\n\n# Simulação de um modelo de IA que resolve problemas\nclass ProblemSolver:\n    def __init__(self, accuracy: float, confidence_threshold: float):\n        \"\"\"\n        Inicializa o resolvedor de problemas.\n        :param accuracy: Probabilidade de resolver um problema corretamente.\n        :param confidence_threshold: Limiar de confiança para decidir ignorar um problema.\n        \"\"\"\n        self.accuracy = accuracy\n        self.confidence_threshold = confidence_threshold\n\n    def solve_problem(self, problem_id: str) -> Tuple[str, bool]:\n        \"\"\"\n        Resolve um problema específico.\n        :param problem_id: Identificador do problema.\n        :return: Uma tupla contendo a solução (ou \"skip\") e um booleano indicando sucesso.\n        \"\"\"\n        # Simula a confiança do modelo (um valor entre 0 e 1)\n        confidence = random.random()\n\n        # Ignora o problema apenas se a confiança for extremamente baixa\n        if confidence < 0.1:\n            return \"skip\", False\n\n        # Decide se o problema foi resolvido corretamente com base na acurácia\n        success = random.random() < self.accuracy\n        if success:\n            return f\"patch_for_{problem_id}\", True\n        else:\n            return f\"bad_patch_for_{problem_id}\", False\n\n# Função principal para gerar submissão\ndef generate_submission(problems: List[str], solver: ProblemSolver) -> Tuple[int, int, int]:\n    \"\"\"\n    Gera uma submissão para a competição.\n    :param problems: Lista de IDs dos problemas.\n    :param solver: Instância do resolvedor de problemas.\n    :return: Tupla com o número de problemas resolvidos corretamente, com falha e ignorados.\n    \"\"\"\n    n_correct = 0\n    n_wrong = 0\n    n_skipped = 0\n\n    for problem in problems:\n        solution, success = solver.solve_problem(problem)\n        if solution == \"skip\":\n            n_skipped += 1\n        elif success:\n            n_correct += 1\n        else:\n            n_wrong += 1\n\n    return n_correct, n_wrong, n_skipped\n\n# Parâmetros do modelo\naccuracy = 0.995  # Acurácia aumentada para 99.5%\nconfidence_threshold = 0.1  # Limiar de confiança reduzido para ignorar menos problemas\n\n# Simulação de problemas\nnum_problems = 10000  # Suponha que temos 10.000 problemas no conjunto de testes\nproblems = [f\"problem_{i}\" for i in range(num_problems)]\n\n# Resolvedor de problemas\nsolver = ProblemSolver(accuracy=accuracy, confidence_threshold=confidence_threshold)\n\n# Gerar submissão\nn_correct, n_wrong, n_skipped = generate_submission(problems, solver)\n\n# Calcular pontuação final\nfinal_score = calculate_score(n_correct, n_wrong, n_skipped)\n\n# Resultados\nprint(f\"Problemas resolvidos corretamente: {n_correct}\")\nprint(f\"Problemas com falha: {n_wrong}\")\nprint(f\"Problemas ignorados: {n_skipped}\")\nprint(f\"Pontuação final: {final_score:.6f}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-03-20T13:13:49.598943Z","iopub.execute_input":"2025-03-20T13:13:49.599411Z","iopub.status.idle":"2025-03-20T13:13:49.620123Z","shell.execute_reply.started":"2025-03-20T13:13:49.599381Z","shell.execute_reply":"2025-03-20T13:13:49.618951Z"}},"outputs":[],"execution_count":null}]}