Orivel Orivel
Abrir menu

Ultimas tarefas e discussoes

Explore o conteudo benchmark mais recente de tarefas e discussoes. Filtre por genero para focar no que voce quer comparar.

Generos de Comparacao

Lista de Modelos

Programação

Anthropic Claude Haiku 4.5 VS OpenAI GPT-5.2

Analisador Avançado de Arquivo de Log para um Formato Personalizado

Escreva uma função Python `parse_log(log_content: str) -> list` que analise um arquivo de log com um formato personalizado. A função deve receber o conteúdo do log como uma única string multilinha e retornar uma lista de dicionários, em que cada dicionário representa uma transação concluída com sucesso. **Regras do Formato de Log:** 1. **`START <transaction_id> <timestamp>`**: Marca o início de uma transação. `transaction_id` é uma string sem espaços. `timestamp` é uma string no formato ISO 8601. 2. **`END <transaction_id> <status> <timestamp>`**: Marca o fim de uma transação. O `transaction_id` deve corresponder a uma transação aberta. `status` é uma palavra única (por exemplo, `SUCCESS`, `FAIL`). 3. **`EVENT <key1>=<value1> <key2>="<value with spaces>" ...`**: Representa um evento dentro da transação ativa atual. Consiste em um ou mais pares chave-valor. Valores que contêm espaços devem estar entre aspas duplas. 4. **`COMMENT # <any text>`**: Uma linha de comentário que deve ser ignorada. **Lógica de Processamento:** * A função deve processar as linhas de forma sequencial. * Uma linha `EVENT` está associada à transação iniciada mais recentemente que ainda não foi finalizada. * Uma transação é considerada completa e válida somente se tiver uma linha `START` e uma linha `END` correspondentes com o mesmo `transaction_id`. * A saída deve ser uma lista de dicionários. Cada dicionário representa uma transação concluída e deve ter as seguintes chaves: * `transaction_id` (string) * `start_time` (string) * `end_time` (string) * `status` (string) * `events` (uma lista de dicionários, onde cada dicionário interno representa os pares chave-valor de uma linha `EVENT`). **Tratamento de Erros e Casos de Borda:** * Ignore quaisquer linhas `COMMENT`, linhas em branco ou linhas malformadas que não correspondam aos formatos especificados. * Ignore qualquer `EVENT` que ocorra fora de uma transação ativa (ou seja, antes do primeiro `START` ou após uma transação ter sido fechada). * Se uma nova linha `START` aparecer antes da transação anterior ter sido fechada com um `END`, a transação anterior é considerada "abandonada" e deve ser descartada. A nova linha `START` inicia uma nova transação. * Qualquer transação que permaneça aberta ao final do arquivo de log também é considerada "abandonada" e não deve ser incluída na saída final.

41
23 Mar 2026 08:42

Programação

Google Gemini 2.5 Pro VS OpenAI GPT-5.2

Implemente um Limitador de Taxa Concorrente com Janela Deslizante e Filas de Prioridade

Desenhe e implemente um limitador de taxa (rate limiter) thread-safe em Python que suporte as seguintes funcionalidades: 1. **Limitação de Taxa com Janela Deslizante**: Em vez de usar janelas de tempo fixas, implemente um algoritmo de janela verdadeiramente deslizante. Cada cliente (identificado por uma chave string) tem permissão para no máximo `max_requests` requisições dentro de qualquer janela móvel de `window_seconds` segundos. 2. **Níveis de Prioridade**: Cada requisição tem um nível de prioridade (inteiro 1-5, onde 1 é a prioridade mais alta). Quando o limite de taxa é atingido para um cliente, requisições de prioridade mais baixa (número maior) devem ser rejeitadas primeiro. Especificamente, se uma nova requisição com prioridade P chegar e a janela estiver cheia, o limitador deve verificar se existe alguma requisição na janela atual com prioridade estritamente menor (número maior) que P. Se existir, a requisição de prioridade mais baixa (com o maior número) tem seu slot "revogado" e a nova requisição de prioridade mais alta é admitida. A requisição revogada deve ser registrada para que possa ser reportada. Se não houver requisição de prioridade mais baixa para revogar, a nova requisição é rejeitada. 3. **Permissão de Rajada (Burst Allowance)**: Cada cliente pode opcionalmente ter uma permissão de rajada `burst` (por padrão 0). Isto permite até `burst` requisições adicionais além de `max_requests` em uma janela, mas somente se pelo menos metade da duração da janela tiver passado desde a primeira requisição do cliente na janela atual. 4. **Segurança em Threads (Thread Safety)**: O limitador de taxa deve ser seguro para uso a partir de múltiplas threads concorrentemente. Demonstre isto com um cenário de teste. 5. **Estatísticas**: O limitador deve rastrear estatísticas por cliente: total de requisições admitidas, total rejeitadas, total revogadas (removidas por requisições de maior prioridade) e utilização atual da janela (como float de 0.0 a 1.0). Implemente a seguinte interface: ```python class RateLimiter: def __init__(self, max_requests: int, window_seconds: float, default_burst: int = 0): ... def set_client_burst(self, client_id: str, burst: int) -> None: """Override burst allowance for a specific client.""" ... def allow(self, client_id: str, priority: int = 3, timestamp: float = None) -> bool: """ Check if a request is allowed. If timestamp is None, use current time. Returns True if the request is admitted, False if rejected. """ ... def get_stats(self, client_id: str) -> dict: """ Return a dict with keys: 'admitted', 'rejected', 'revoked', 'utilization' """ ... def get_revoked_log(self, client_id: str) -> list: """ Return a list of (timestamp, priority) tuples for revoked requests for the given client, in chronological order. """ ... ``` Forneça uma implementação completa e executável juntamente com um script de demonstração que: - Cria um limiter com max_requests=5, window_seconds=10.0, default_burst=2 - Simula uma sequência de requisições de dois clientes com prioridades e timestamps variados que exercitem todas as funcionalidades (expiração da janela deslizante, revogação por prioridade, ativação da rajada e rejeição) - Imprime as estatísticas e logs de revogação para cada cliente ao final - Inclui um breve teste multithreaded com pelo menos 4 threads fazendo requisições concorrentes Certifique-se de tratar casos de borda tais como: - Validação do valor de prioridade (deve ser 1-5) - Requisições chegando exatamente nas fronteiras da janela - Múltiplas revogações em sequência - Ativação da permissão de rajada precisamente no marco de metade da janela - IDs de cliente vazios ou desconhecidos em consultas de estatísticas

50
19 Mar 2026 14:46

Programação

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5.2

Implemente um Cache LRU Concorrente Sem Bloqueio Global

Projete e implemente um cache LRU (Least Recently Used — Menos Recentemente Utilizado) com segurança para threads em Python, que suporte leituras e gravações concorrentes sem usar um bloqueio global para cada operação. Sua implementação deve satisfazer os seguintes requisitos: 1. O cache tem uma capacidade máxima fixa especificada no momento da construção. 2. Ele suporta três operações: - get(key): Retorna o valor associado à chave, ou None se a chave não estiver presente. Acessar uma chave deve marcá-la como a mais recentemente usada. - put(key, value): Insere ou atualiza o par chave-valor. Se o cache estiver na capacidade máxima e uma nova chave for inserida, a entrada menos recentemente usada deve ser removida. - delete(key): Remove a chave do cache, se presente. Retorna True se a chave foi encontrada e removida, False caso contrário. 3. O cache deve ser seguro para uso simultâneo por múltiplas threads. Operações get concorrentes em chaves diferentes não devem bloquear umas às outras. Você deve minimizar a contenção — um único bloqueio grosseiro ao redor de tudo não é aceitável. 4. A política de remoção (eviction) deve ser estritamente LRU: a entrada que foi acessada (via get ou put) menos recentemente deve ser a removida. 5. Trate casos-limite: capacidade de 1, puts concorrentes rápidos que disparem remoções, get/put/delete intercalados na mesma chave por diferentes threads, e capacidade zero ou negativa (levantar ValueError). Forneça sua implementação completa como um único módulo Python. Inclua uma breve explicação da sua estratégia de concorrência e por que ela preserva a correção. Inclua também uma demonstração curta (em um bloco main ou função de teste) que crie múltiplas threads executando operações mistas de get/put/delete e que verifique (assert) que o cache nunca excede sua capacidade e que não ocorre corrupção de dados.

64
19 Mar 2026 11:51

Programação

Google Gemini 2.5 Flash VS OpenAI GPT-5.2

Implemente uma Skip List Concorrente Sem Bloqueios com Consultas por Intervalo

Design e implemente uma estrutura de dados skip list concorrente em uma linguagem de sua escolha (C++, Java, Rust, Go ou Python) que suporte as seguintes operações: 1. **insert(key, value)** – Insere um par chave-valor. Se a chave já existir, atualize o valor de forma atômica. Retorna true se uma nova chave foi inserida, false se foi atualizada. 2. **remove(key)** – Remove logicamente o par chave-valor. Retorna true se a chave foi encontrada e removida, false caso contrário. 3. **find(key)** – Retorna o valor associado à chave, ou indica ausência. 4. **range_query(low, high)** – Retorna todos os pares chave-valor onde low <= key <= high, como uma lista ordenada por chave. O resultado deve ser um snapshot consistente: não deve incluir chaves que nunca estiveram simultaneamente presentes durante a execução da operação. 5. **size()** – Retorna o número aproximado de elementos ativos (não deletados). Requisitos e restrições: - A skip list deve ser segura para uso concorrente por múltiplas threads realizando qualquer combinação das operações acima simultaneamente, sem um bloqueio global único. Você pode usar bloqueios de granularidade fina, técnicas sem bloqueio (CAS) ou uma combinação. - Exclusão preguiçosa é aceitável: nós podem ser marcados logicamente como deletados antes da remoção física. - A geração de nível probabilística deve usar uma distribuição geométrica padrão com p=0.5 e nível máximo de 32. - Chaves são inteiros de 64 bits; valores são strings. - Inclua considerações adequadas sobre segurança de memória. Se usar uma linguagem sem coleta de lixo, explique ou implemente sua estratégia de recuperação (por exemplo, recuperação baseada em épocas, hazard pointers). Entregáveis: 1. Código-fonte completo e compilável/executável com comentários explicando sua estratégia de concorrência. 2. Um teste ou demonstração que lance múltiplas threads realizando inserções, exclusões, buscas e consultas por intervalo concorrentes, e valide a correção (por exemplo, sem atualizações perdidas, sem leituras fantasmas em consultas por intervalo, sem travamentos). 3. Uma seção de análise breve (como comentários ou uma docstring) discutindo: - As garantias de linearizabilidade (ou isolamento por snapshot) que sua implementação fornece. - A complexidade de tempo esperada de cada operação. - Limitações conhecidas ou possíveis problemas ABA e como você os aborda. Sua solução será avaliada com base na correção sob concorrência, clareza do código, robustez da estratégia de concorrência, qualidade do mecanismo de snapshot para consultas por intervalo e completude da análise.

61 1
18 Mar 2026 22:05

Links relacionados

X f L