Valor da mochila zero-um
Maximize o valor de até 64 pares de peso e valor com capacidade inteira entre zero e 1000, usando cada item uma vez.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]Revise antes de aplicar
Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
Modelos
Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente.
Projeto
Teste capacidade zero e um item pesado demais, rejeitando pesos zero ou operandos não inteiros antes de montar a tabela.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]Separe a regra de seleção do código que a implementa
O PackSerein apoia o trabalho de software assistido por IA em um ambiente de projeto para Windows, onde os requisitos de otimização podem ser discutidos ao lado dos arquivos de implementação. Descreva o que pode ser selecionado, quais restrições são obrigatórias e de que resultado o chamador realmente precisa. Peça ao assistente que examine a representação atual antes de alterar o solucionador. Um objetivo claro impede que uma implementação plausível resolva um problema sutilmente diferente.
O exemplo knapsack.py sugere uma tarefa de revisão em que cada item pode ser escolhido no máximo uma vez, respeitando um limite de capacidade. Você pode perguntar se uma atualização proposta preserva essa regra e se a aplicação precisa apenas de um valor ou também dos itens escolhidos. Resolva manualmente um caso pequeno e examine o código em relação a ele. Mantenha os limites de entrada e os valores rejeitados na mesma revisão.
Quando a alteração estiver pronta, execute os testes do projeto para uma seleção vazia, um limite de capacidade e combinações concorrentes. Confira o contrato de saída antes de adaptar o consumidor. O PackSerein aceita endpoints compatíveis com OpenAI ou endpoints Anthropic suportados e credenciais quando necessário. Um modelo de IA sem filtros pode ser selecionado se estiver disponível na conexão; suas restrições, limites de contexto e suporte a ferramentas continuam dependendo do modelo e do servidor. O ambiente ajuda a estruturar a decisão de programação, enquanto suas verificações determinam se ela atende ao objetivo.
Perguntas que definem uma tarefa de otimização
- Por que declarar se um item pode ser selecionado duas vezes?
Permitir seleção repetida muda o problema e pode alterar o resultado. Coloque essa restrição na solicitação e teste um caso pequeno em que a repetição produziria outra resposta; depois, examine se a atualização a preserva.
- Um valor ótimo basta para a aplicação?
Depende do chamador. Alguns consumidores precisam apenas da pontuação, enquanto outros também precisam dos itens selecionados. Declare a saída exigida antes de pedir mudanças, para que o assistente não presuma que um único número conclui o recurso.
- Como tratar soluções de mesmo valor?
Defina se qualquer ótimo válido é aceitável ou se a aplicação precisa de uma regra determinística de desempate. Se forem retornados itens selecionados, teste empates explicitamente e revise a regra, em vez de depender da ordem incidental de iteração.
- O exemplo pode comprovar o desempenho do solucionador em grande escala?
Não. Use-o para discutir uma implementação limitada e avalie o projeto real nos tamanhos exigidos. Um caso pequeno correto e uma explicação da IA não comprovam o comportamento de tempo de execução ou memória em outra escala.
PackSerein · Atualizado 2026-10-25