UUnionPebble
Ambiente de programação com IA

Agrupamento de componentes disjuntos

Agrupe nós numerados por conexões não direcionadas usando conjuntos disjuntos.

● ● ●UnionPebble●
Fluxos de trabalho · Agrupamento de componentes disjuntos ×
def components(count, edges):
    if type(count) is not int or not 0 <= count <= 10000:
        raise ValueError("node count")
    pairs = list(edges)
    for pair in pairs:
        if len(pair) != 2 or any(type(v) is not int or not 0 <= v < count for v in pair):
            raise ValueError("edge endpoint")
    parent = list(range(count))
    def find(x):
        while parent[x] != x:
            parent[x] = parent[parent[x]]
            x = parent[x]
        return x
    for a, b in pairs:
        parent[find(b)] = find(a)
    groups = {}
    for node in range(count): groups.setdefault(find(node), []).append(node)
    return sorted(groups.values())
✳Agrupe nós numerados por conexões não direcionadas usando conjuntos disjuntos.
✓ AlteraçõesRevise antes de aplicar ↗
Ilustração do ambiente
01

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.

02

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.

03

Projeto

Teste nós isolados, arestas repetidas e um grafo vazio, rejeitando extremidades inválidas antes de unir componentes.

Fluxos de trabalho

Agrupamento de componentes disjuntos

Fluxos de trabalho ↗
Fluxos de trabalho
def components(count, edges):
    if type(count) is not int or not 0 <= count <= 10000:
        raise ValueError("node count")
    pairs = list(edges)
    for pair in pairs:
        if len(pair) != 2 or any(type(v) is not int or not 0 <= v < count for v in pair):
            raise ValueError("edge endpoint")
    parent = list(range(count))
    def find(x):
        while parent[x] != x:
            parent[x] = parent[parent[x]]
            x = parent[x]
        return x
    for a, b in pairs:
        parent[find(b)] = find(a)
    groups = {}
    for node in range(count): groups.setdefault(find(node), []).append(node)
    return sorted(groups.values())
Ambiente de programação com IA

Transforme requisitos de agrupamento em uma alteração de software revisável

UnionPebble é um ambiente de programação com IA para Windows que reúne um requisito de agrupamento, seu código-fonte e seus consumidores em uma conversa de desenvolvimento. Comece descrevendo o que a aplicação considera conectado e o que espera receber. Peça ao modelo que inspecione a representação existente antes de sugerir alterações no código que cria grupos.

Para uma tarefa concreta, use components.py para discutir uma conexão que una dois grupos antes separados. Inclua um nó isolado no caso de teste e declare a ordem esperada da saída. O exemplo ajuda a formular uma solicitação de alteração sem presumir que uma coleção matematicamente equivalente atenderá ao serializador ou ao código de exibição da aplicação.

Revise a proposta nesses limites. Confira identificadores de nós aceitos, arestas inválidas e o caso vazio; depois execute as verificações pertinentes do projeto. Um resultado útil deve explicar tanto por que os membros pertencem ao mesmo grupo quanto por que a estrutura retornada atende ao consumidor. Mantenha mudanças não relacionadas de armazenamento ou interface fora de uma solicitação destinada a corrigir o agrupamento.

Conecte um modelo por um endpoint suportado compatível com OpenAI ou da Anthropic, fornecendo credenciais quando exigidas. Se o serviço oferecer um modelo de IA abliterado, ele é uma opção para a sessão; as restrições continuam dependendo do provedor. Ferramentas disponíveis e contexto também dependem do modelo e do servidor, portanto delimite a inspeção ao código-fonte e às evidências que a sessão realmente pode usar.

Agrupamento além de um exemplo sem falhas

Nós isolados devem aparecer na saída?

Defina essa expectativa explicitamente. Uma lista de arestas pode nunca mencionar um nó isolado, mesmo que a aplicação saiba de sua existência. Inclua o número declarado de nós e um caso isolado para que o código proposto não descarte silenciosamente essas entradas do resultado.

Ordens equivalentes de grupos podem quebrar um chamador?

Sim, se um consumidor depender de uma ordem estável para serialização, comparação ou apresentação. Declare se a ordenação faz parte da interface e inspecione a convenção de saída. A equivalência matemática por si só não prova compatibilidade com snapshots ou processamento posterior no projeto.

O que deve acontecer com uma extremidade de aresta fora do intervalo?

Defina o comportamento de entrada rejeitada e inspecione onde ele é apresentado. O exemplo valida identificadores em relação ao número declarado de nós. Revise a resposta do chamador em vez de presumir que uma exceção sozinha comunica um erro útil a quem forneceu os dados de agrupamento.

Como conferir uma conexão que mescla grupos?

Escreva de forma independente os grupos iniciais e os membros esperados após a mesclagem, incluindo um grupo não afetado. Execute o caso no código alterado e inspecione a ordenação separadamente. Isso dá à revisão um resultado concreto de antes e depois sem repetir a implementação no teste.

Baixar para Windows ↗

UnionPebble · Atualizado 2026-10-25