Para chegar a essa solução, eu decidi usar o método TDD de escrever testes antes do código.
Eu comecei tentando resolver na ordem: I
, III
, III
,
e meu código começou assim:
return "I" * arabic
E para resolver o IV
eu tive que levar em conta a
subtração.
Porém foi olhando para o maior dos paramêtros do teste que eu havia montado que eu percebi uma coisa:
(5423, "MMMMMCDXXIII")
Eu poderia separar dessa maneira
(5423, "MMMMM CD XX III")
Ou seja, para dizer 5
quando estamos na cada dos
milhares, usamos 5 vezes o M
Para dizer 4
na casa das centenas, precisamos usar
a lógica de subtração, assim CD
. Assim como fazemos
quando representamos 4
usando IV
Portanto, cada casa do nosso sistema numérico seguia
a mesma lógica que a lógica de 1
a 9
romano, apenas mudando
os símbolos.
Segue instruções para executar os testes do pytest
Requisitos:
Python
>= 3.6pip
- (opcional)
virtualenv
Passos:
Clone o repositório, navegue para o diretório do projeto
cd zenvia_dojo/
Crie um novo ambiente virtual python (opcional), e instale as dependências pip install -r requirements.txt
E execute os testes usando o Makefile:
make run-tests
ou usando o comando completo:
pytest -x --cov=romanos --cov-report=term
Requisitos:
- Docker
Para executar, basta usar o target do Makefile:
make run-docker
Ou você pode montar a imagem e executar usando o docker cli:
docker build -t zenvia_test .
docker run -it zenvia_test
Obs:
Caso não funcione, é possível tirar o argumento -it
.
Ele serve somente para manter as cores do terminal