Comparador de Strings
help
{{apiData.me.position}}˚ no Ranking
profile pic account_circle
Login Comece agora
Iniciar Desafio Iniciar Desafio Fórum
{{apiData.participant_count}} Participantes
Criado Por: Created by Loadsmart
Python
Criar APIs
Testar APIs
pytest

Comparador de Strings

Construa uma API com dois endpoints que aceitem uma sequência de caracteres, seguindo a seguinte especificação:

  • <host>/v1/diff/<ID>/left and <host>/v1/diff/<ID>/right

Os dados fornecidos para estarão disponíveis em um terceiro endpoint: - <host>/v1/diff/<ID>

O resultado neste terceiro endpoint disponibiliza a seguinte informação no formato JSON:

  • Se as strings são iguais, retorne Input: left: AAA right: AAA

Output:

{"state": "equals", "left": "AAA", "right": "AAA"}
  • Se naão forem do mesmo tamanho Input: left: AAA right: A

Output:

{"state": "size_mismatch", "left": "AAA", "right": "A"}
  • Se forem do mesmo tamanho, apresente a dados sobre a diferença. Os dados diferentes não são necessários: Input: left: AAABBB right: AAACCC ^ offset

Output:

{"state": "content_mismatch", "offset": 3, "left": "AAABBB", "right": "AAACCC"}

Mantenha a implementação explícita, comunicando suas escolhas sobre a solução proposta.

Considere casos de falha possíveis.

Siga as mensagens dos resultados esperados pelos testes para apoiá-lo na evolução de seu código.

Tópicos

Neste desafio você aprenderá:

  • Python
  • Criar APIs
  • Testar APIs
  • pytest

Requisitos

  • Python 3.6
  • pip
  • pytest
  • Git

Você precisará de python 3.6 (ou superior) e do gerenciador de pacotes pip.

O recomendado é você utilizar um ambiente virtual. Para isto, execute os comandos como no exemplo abaixo:

pip3 install virtualenv
virtualenv venv -p python3
source venv/bin/activate
pip install -r requirements.txt

Ao terminar o desafio, você pode sair do ambiente criado com o comando deactivate

Detalhes

A API deve responder pelas seguintes URLs:

/v1/diff/{comparison_id}/left

Método: POST

Registra uma string no lado esquerdo da comparação

/v1/diff/{comparison_id}/right

Método: POST

Registra uma string no lado direito da comparação

/v1/diff/{comparison_id}

Método: GET

Retorna o resultado para a comparação. Os resultados possiveis, são:

Quando as strings forem iguais

HTTP status: 200 {“state”: “equals”, “left”: “DEF”, “right”: “DEF”} {“state”: “equals”, “left”: “ABC”, “right”: “ABC”}

Quando as strings possuirem mesmo comprimento, porem conteudo diferente, adicione a posicao do primeiro caractere diferente

HTTP status: 422 {“state”: “content_mismatch”, “left”: “AAACCC”, “right”: “AAABBB”, “offset”: 3} {“state”: “content_mismatch”, “left”: “AAA”, “right”: “BBB”, “offset”: 0}

Quando faltar um dos lados (left ou right)

HTTP status: 422 {“state”: “incomplete”, “left”: “ABC”, “right”: null} {“state”: “incomplete”, “left”: null, “right”: “DEF”}

Quando strings possuirem comprimentos diferentes

HTTP status: 422 {“state”: “size_mismatch”, “left”: “BBBBBB”, “right”: “AAA”}

”`

codenation code review

Para receber Code review, compartilhe o link abaixo com colegas ou em nosso fórum de discussões:

codenation code review

Para receber Code review, você precisa primeiramente finalizar o desafio.

{{apiData.participant_count}} Participantes

Para definir seu posicionamento no ranking do desafio, utilizaremos a nota mais alta que tiver conquistado nele. Caso outra pessoa participante obtenha a mesma nota que a sua, o critério de desempate será data e hora de envio da mais recente.

empty ranking Ainda não temos participantes suficientes para o ranking!
Aproveite e seja um dos primeiros a participar desse desafio.
CODE:NOME NOTA
{{candidate.position}}. {{candidate.name}} {{candidate.score.toFixed(2)}}%
An Introduction to Python

This is a simple book to learn Python programming language, it is for the programmers who are new to Python.

Testing Your Code

Testing Your Code

pytest: helps you write better programs

The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries.

Tornado

Python web framework and asynchronous networking library