Orivel Orivel
Abrir menu

Últimas tarefas e discussões

Explore o conteúdo de benchmark mais recente de tarefas e discussões. Filtre por género para focar no que você quer comparar.

Gêneros de comparação

Lista de modelos

Programação

Anthropic Claude Opus 4.8 VS Google Gemini 2.5 Flash

Implemente um Simulador Determinístico de Livro de Ordens Limite

Escreva uma solução de arquivo único em Python 3.11 implementando a função process_events(events: list[dict]) -> dict. Não use pacotes externos. A função deve simular um pequeno livro de ordens limite de uma bolsa para um instrumento. Ela recebe uma lista de dicionários de eventos na ordem de entrada e retorna um dicionário com exatamente estas chaves: trades, rejected, book. Tipos de evento: Evento de nova ordem: Campos obrigatórios: type="new", id, side, order_type, qty. side é "buy" ou "sell". order_type é "limit" ou "market". qty é um inteiro positivo. Uma ordem limit também requer price, um número inteiro positivo de centavos. Campo opcional tif é time-in-force: "GTC", "IOC", ou "FOK". Se ausente, use "GTC" para ordens limit e "IOC" para ordens market. Ordens market não podem ter tif="GTC" e não podem ficar repousando no livro. Evento de cancelamento: Campos obrigatórios: type="cancel", id. Cancela a quantidade restante de uma ordem atualmente repousando com esse id. Regras de pareamento: O livro tem bids e asks. Ordens limit buy repousadas são bids; ordens limit sell repousadas são asks. Prioridade preço-tempo é obrigatória: melhor preço primeiro; para o mesmo preço, a ordem repousada aceita mais cedo primeiro. Uma ordem buy casa com asks repousados enquanto puder cruzar: buy market cruza qualquer ask; buy limit cruza asks com preço do ask <= preço limit do buy. Uma ordem sell casa com bids repousados enquanto puder cruzar: sell market cruza qualquer bid; sell limit cruza bids com preço do bid >= preço limit do sell. A quantidade de cada trade é min(quantidade restante do entrante, quantidade restante do repousado). O preço do trade é sempre o preço limit da ordem maker repousada, nunca o preço da ordem entrante. Um registro de trade deve ser anexado imediatamente quando ocorrer, com exatamente estas chaves: buy_id, sell_id, price, qty, taker_id, maker_id. Ordens repousadas parcialmente preenchidas mantêm sua prioridade original com a quantidade restante. Ordens totalmente preenchidas deixam o livro. Comportamento de time-in-force: Ordens limit GTC mantêm qualquer restante não preenchido no livro. Ordens IOC executam o máximo possível imediatamente e então cancelam qualquer restante. Ordens FOK devem ser completamente passíveis de preenchimento imediatamente de acordo com o livro atual e as regras de cruzamento. Se não puderem ser totalmente preenchidas, não produzem trades e não alteram o livro. Se completamente preenchíveis, executam normalmente. Ordens FOK nunca repousam. Regras de validação e rejeição: Se um evento estiver malformado, rejeite-o sem alterar o livro. Anexe um registro de rejeição a rejected com chaves input_index, event, reason. O reason pode ser uma string curta e legível por humanos. Rejeite uma nova ordem se seu id já tiver sido usado por qualquer new order previamente aceita, mesmo que essa ordem anterior já tenha sido preenchida ou cancelada desde então. Rejeite eventos de cancelamento para ids desconhecidos ou ids que não estejam mais repousando. Rejeite qty e price não inteiros, zero ou negativos. Em Python, bool não deve ser aceito como inteiro para esses campos. Ignore campos extras em eventos que seriam de outra forma válidos. Formato de retorno: trades: lista de registros de trade na ordem de execução. rejected: lista de registros de rejeição na ordem de entrada. book: um dicionário com chaves bids e asks. book["bids"] deve listar todos os bids repousados ordenados por preço descendente, depois por tempo original de repouso, cada um como {"id": id, "price": price, "qty": remaining_qty}. book["asks"] deve listar todos os asks repousados ordenados por preço ascendente, depois por tempo original de repouso, cada um como {"id": id, "price": price, "qty": remaining_qty}. Sua resposta deve ser um código Python executável completo definindo process_events. Você pode incluir classes/funções auxiliares e uma pequena seção de auto-teste protegida por if name == "main":, mas a função principal não deve ler stdin nem escrever stdout.

294
29 Jun 2026 09:44

Programação

Anthropic Claude Opus 4.8 VS Google Gemini 2.5 Pro

Implementar aplicação atômica de JSON Patch em Python

Escreva uma implementação em Python 3.11 de uma função denominada apply_json_patch(document, patch) que aplique uma sequência de operações no estilo JSON Patch a um valor compatível com JSON e retorne o valor patchado. O documento de entrada pode ser qualquer combinação de dict, list, str, int, float, bool e None. O patch é uma lista de dicionários de operações. A implementação não deve mutar o documento original nem qualquer objeto aninhado alcançável a partir dele. Se qualquer operação for inválida, a função deve lançar uma classe de exceção personalizada chamada JsonPatchError e deixar o documento original inalterado. Operações suportadas: add, remove, replace, move, copy e test. Use caminhos JSON Pointer com tokens separados por barras, onde a string vazia identifica o documento inteiro, os tokens decodificam ~1 como / e ~0 como ~, e qualquer outro uso de ~ é inválido. Para objetos, um token de caminho é uma chave. Para arrays, um token de caminho deve ser um inteiro não negativo sem zeros à esquerda, exceto o token único 0; apenas para add, o token final pode ser - para anexar. A operação add insere em arrays em um índice de 0 até len(array), anexa para '-', define uma chave de objeto, ou substitui o documento inteiro se o caminho for vazio. A operação remove requer que o alvo exista e o elimina. A operação replace requer que o alvo exista e o substitui. A operação move requer os campos from e path, remove o valor em from e o adiciona em path, e deve rejeitar mover um valor para um dos seus próprios descendentes. A operação copy requer os campos from e path e faz uma cópia profunda (deep copy) do valor de origem para o alvo. A operação test requer value e só tem sucesso se o alvo atual for igual em profundidade (deeply equal) a value, incluindo a igualdade normal do Python para números e igualdade exata para strings, booleanos e None. Cada dicionário de operação deve conter exatamente os campos exigidos por essa operação mais o campo op; campos desconhecidos ou campos ausentes são erros. A função deve ser determinística, razoavelmente eficiente e depender somente da biblioteca padrão do Python. Inclua quaisquer funções auxiliares ou classes necessárias. Não escreva um programa de linha de comando nem use pacotes externos.

341
15 Jun 2026 09:43

Links relacionados

X f L