O objetivo dessa etapa é testar os conhecimentos em lógica de programação. Para isso, foram preparadas três questões com diferentes níveis de dificuldade.
Escreva um algoritmo que mostre na tela uma escada de tamanho n utilizando o caractere * e espaços. A base e altura da escada devem ser iguais ao valor de n. A última linha não deve conter nenhum espaço.
Exemplo:
Entrada:
n = 6
Saída:
*
**
***
****
*****
******
Débora se inscreveu em uma rede social para se manter em contato com seus amigos. A página de cadastro exigia o preenchimento dos campos de nome e senha, porém a senha precisa ser forte. O site considera uma senha forte quando ela satisfaz os seguintes critérios:
- Possui no mínimo 6 caracteres.
- Contém no mínimo 1 digito.
- Contém no mínimo 1 letra em minúsculo.
- Contém no mínimo 1 letra em maiúsculo.
- Contém no mínimo 1 caractere especial. Os caracteres especiais são: !@#$%^&*()-+
Débora digitou uma string aleatória no campo de senha, porém ela não tem certeza se é uma senha forte. Para ajudar Débora, construa um algoritmo que informe qual é o número mínimo de caracteres que devem ser adicionados para uma string qualquer ser considerada segura.
Exemplo:
Entrada:
Ya3
Saída:
3
Explicação:
Ela pode tornar a senha segura adicionando 3 caracteres, por exemplo, &ab, transformando a senha em Ya3&ab. 2 caracteres não são suficientes visto que a senha precisa ter um tamanho mínimo de 6 caracteres.
Duas palavras podem ser consideradas anagramas de si mesmas se as letras de uma palavra podem ser realocadas para formar a outra palavra. Dada uma string qualquer, desenvolva um algoritmo que encontre o número de pares de substrings que são anagramas.
Exemplo:
Exemplo 1)
Entrada:
ovo
Saída:
3
Explicação:
A lista de todos os anagramas pares são: [o, o], [ov, vo] que estão nas posições [[0, 2], [0, 1], [1, 2]] respectivamente.
Exemplo 2)
Entrada:
ifailuhkqq
Saída:
3
Explicação:
A lista de todos os anagramas pares são: [i, i], [q, q] e [ifa, fai] que estão nas posições [[0, 3]], [[8, 9]] e [[0, 1, 2], [1, 2, 3]].
- Eclipse IDE - Ambiente de Desenvolvimento Integrado
- Java - Linguagem de programação Java
- JavaDoc - Ferramenta de geração da documentação Java
- JUnit - Ferramenta para cobertura de testes unitários (Configurando JUnit em Projeto Java no Eclipse).
Antes de baixar o projeto verifique se está com o Java instalado, no meu caso eu uso o comando java --version
, no Linux Ubuntu 20.04 LTS, para obter esses dados:
Para baixar o projeto existe a opção de clone diretamente pelo terminal ou ainda o download do arquivo compactado .zip .
Para que a importação do projeto no eclipse seja efetuada corretamente futuramente é importante clonar dentro do workspace do eclipse, ou mover após o download.
O comando para clonar o repositório é:
git clone https://github.com/RandelSouza/capgemini-desafio-codigo.git
Com o repositório baixado a pasta será aberta na IDE eclipse.
Para isso, execute os seguintes pontos no eclipse:
- Clicar em File -> Import.
- Selecionar Existing Projects into Workspace.
- Selecionar o projeto que deseja importar clicando em Browse.
- Clicar em Abrir.
- Por fim, clicar em Finish para finalizar a importação.
Tendo o projeto devidamente importado as questões serão executadas ao selecionar o arquivo .java referente a questão e em seguida clicar no icone de execução (run):
Acessar documentação das questões de forma online: Documentação.
JUnit é uma ferramenta de automatização de testes unitários e de testes de regressão para projetos Java.
Para executar os testes separadamente é preciso:
- Clicar com o botão direito na classe de testes.
- Selecionar Run AS -> JUnit Test
Ou então executar normalmente a classe ExecutarTodosTestes, que é uma automatização das execuções de todos os demais testes.
Essa ferramenta foi utilizada para criar alguns testes nas questões propostas. A seguir são vistos os resultados dos testes criados.