Atribuição canônica de códigos de prefixo
Atribua códigos binários de prefixo canônicos a até 256 símbolos com comprimentos de 1 a 16.
def canonical_codes(lengths):
if type(lengths) is not dict or len(lengths) > 256:
raise ValueError("codes.input")
if any(type(s) is not str or not s or type(n) is not int or
not 1 <= n <= 16 for s,n in lengths.items()):
raise ValueError("codes.length")
result, code, previous = {}, 0, 0
for symbol, length in sorted(lengths.items(), key=lambda p:(p[1],p[0])):
code <<= length-previous
if code >= 1 << length:
raise ValueError("codes.oversubscribed")
result[symbol] = format(code, f"0{length}b")
code += 1
previous = length
return result| 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 tabelas vazias e incompletas, ordene empates pelas cadeias Unicode originais e rejeite excesso de códigos ou comprimentos inválidos sem normalizar símbolos. |
def canonical_codes(lengths):
if type(lengths) is not dict or len(lengths) > 256:
raise ValueError("codes.input")
if any(type(s) is not str or not s or type(n) is not int or
not 1 <= n <= 16 for s,n in lengths.items()):
raise ValueError("codes.length")
result, code, previous = {}, 0, 0
for symbol, length in sorted(lengths.items(), key=lambda p:(p[1],p[0])):
code <<= length-previous
if code >= 1 << length:
raise ValueError("codes.oversubscribed")
result[symbol] = format(code, f"0{length}b")
code += 1
previous = length
return resultTorne reproduzível uma alteração na tabela de codificação
Quando duas implementações montam tabelas de codificação diferentes a partir da mesma descrição, a depuração exige mais que outra amostra de saída. Codelith oferece um ambiente de programação com IA para Windows para essa investigação: abra o projeto, coloque os resultados divergentes na conversa e peça ao modelo conectado que examine a origem da diferença antes de sugerir alterações.
Uma tarefa adequada é atribuir códigos de prefixo canônicos a partir dos comprimentos dos símbolos. Descreva a regra de ordenação para comprimentos iguais e se as strings Unicode originais devem permanecer inalteradas. Inclua o consumidor da tabela para que a proposta considere o formato que ele precisa ler. O exemplo de atribuição serve para contextualizar sua revisão de código, e não representa uma ferramenta de codificação incluída no ambiente.
Peça uma proposta focada que explicite a ordenação escolhida. Revise tabelas vazias e incompletas separadamente de comprimentos que excedem o espaço de códigos e execute os casos de teste do formato no ambiente do projeto. Compare as strings de bits exatas e suas associações com os símbolos. Uma tabela organizada ainda pode divergir do que seu consumidor espera. Mantenha a serialização esperada visível durante a revisão.
Codelith suporta conexões com modelos por endpoints compatíveis com OpenAI ou da Anthropic. Um modelo de IA sem restrições é uma possibilidade selecionável quando seu provedor o oferece, com credenciais conforme necessário. O servidor e o modelo selecionados controlam contexto, ferramentas e restrições. Seus casos de teste e sua revisão estabelecem se a alteração de codificação proposta atende ao contrato da aplicação.
Perguntas para uma alteração na tabela de codificação
- Quais evidências ajudam a explicar duas tabelas diferentes?
Forneça a mesma entrada de símbolos e comprimentos, cada tabela resultante e a convenção de ordenação documentada. Identifique onde a aplicação grava ou lê a tabela. Assim, o modelo poderá discutir uma divergência concreta em vez de adivinhar qual saída o formato espera.
- Os símbolos Unicode devem ser normalizados antes da ordenação?
Somente se o formato exigir explicitamente essa transformação. A tarefa ilustrativa preserva as strings originais e as ordena de acordo com isso. Informe a convenção na solicitação e verifique se o código proposto não funde nem altera silenciosamente símbolos distintos.
- Tabelas incompletas e tabelas que excedem o espaço de códigos são erros equivalentes?
Elas descrevem condições diferentes, e seu formato determina quais aceita. Inclua casos de teste separados e os resultados esperados. Peça que a proposta preserve essa distinção em vez de tratar qualquer espaço de código não utilizado como evidência de uma tabela inválida.
- Como verificar a compatibilidade com um leitor existente?
Execute casos representativos de tabelas pelo gravador e pelo leitor do projeto, comparando as associações exatas exigidas pelo formato. Revise os dois fluxos se a proposta alterar a ordenação. Uma edição de código bem-sucedida, por si só, não estabelece compatibilidade com dados armazenados anteriormente.
Codelith · Atualizado 2026-10-25