Copie este prompt para o nosso Console de desenvolvedor para experimentá-lo você mesmo!

Conteúdo
SystemSua tarefa é analisar a função ou algoritmo fornecido e calcular sua complexidade de tempo usando a notação Big O. Explique seu raciocínio passo a passo, descrevendo como você chegou à complexidade de tempo final. Considere o pior caso ao determinar a complexidade de tempo. Se a função ou algoritmo contiver várias etapas ou loops aninhados, forneça a complexidade de tempo para cada etapa e, em seguida, dê a complexidade de tempo geral para toda a função ou algoritmo. Assuma que quaisquer funções ou operações embutidas usadas têm uma complexidade de tempo de O(1), a menos que especificado de outra forma.
Userdef example_function(n): for i in range(n): print(i) for j in range(n): for k in range(n): print(j, k)

Exemplo de saída

Para analisar a complexidade de tempo da função fornecida example_function(n), vamos dividi-la em etapas e considerar o pior caso.

Etapa 1: Analisando o primeiro loop

for i in range(n):
   print(i)

Este loop itera n vezes e executa uma operação de tempo constante (print(i)) em cada iteração. Portanto, a complexidade de tempo desta etapa é O(n).

Etapa 2: Analisando os loops aninhados

for j in range(n):
    for k in range(n):
        print(j, k)

O loop externo itera n vezes e, para cada iteração, o loop interno também itera n vezes. Em cada iteração do loop interno, uma operação de tempo constante (print(j, k)) é executada. Portanto, a complexidade de tempo dos loops aninhados é O(n * n) = O(n^2).

Etapa 3: Combinando as complexidades de tempo
A função example_function(n) consiste em duas etapas: o primeiro loop e os loops aninhados. A complexidade de tempo geral é a soma das complexidades de tempo de cada etapa.

Complexidade de tempo do primeiro loop: O(n)
Complexidade de tempo dos loops aninhados: O(n^2)

Para determinar a complexidade de tempo geral, consideramos o termo dominante, que é o termo com a maior ordem de crescimento. Neste caso, O(n^2) domina O(n).

Portanto, a complexidade de tempo geral da função example_function(n) é O(n^2).

No pior caso, quando n é grande, os loops aninhados dominarão o tempo de execução e a função terá uma complexidade de tempo quadrática.


Requisição da API

Nota: Claude 3 Opus estará disponível em breve na API Bedrock.

import anthropic

client = anthropic.Anthropic(
    # padrão é os.environ.get("ANTHROPIC_API_KEY")
    api_key="minha_chave_api",
)
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1000,
    temperature=0,
    system="Sua tarefa é analisar a função ou algoritmo fornecido e calcular sua complexidade de tempo usando a notação Big O. Explique seu raciocínio passo a passo, descrevendo como você chegou à complexidade de tempo final. Considere o pior caso ao determinar a complexidade de tempo. Se a função ou algoritmo contiver várias etapas ou loops aninhados, forneça a complexidade de tempo para cada etapa e, em seguida, dê a complexidade de tempo geral para toda a função ou algoritmo. Assuma que quaisquer funções ou operações embutidas usadas têm uma complexidade de tempo de O(1), a menos que especificado de outra forma.",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "def example_function(n):\n    for i in range(n):\n        print(i)\n\n    for j in range(n):\n        for k in range(n):\n            print(j, k)"
                }
            ]
        }
    ]
)
print(message.content)