Na gloriosa cidade de Springfield o banqueiro Carlos Fortuna foi assassinado em sua mansão. O investigador Holmes foi escolhido para solucionar este caso. Após uma série de investigações, ele organizou uma lista com prováveis assassinos, locais e armas.
1 - Advogado Sr. Marinho | |
2 - Chef. de Cozinha Tony Gourmet | |
3 - Coveiro Sérgio Sortuno | |
4 - Dançarina Srta. Rosa | |
5 - Florista Dona Branca | |
6 - Médica Dona Violeta | |
7 - Mordomo James | |
8 - Sargento Bigode |
1 - Biblioteca | |
2 - Cozinha | |
3 - Hall | |
4 - Escritório | |
5 - Sala de estar | |
6 - Sala de jantar | |
7 - Sala de música | |
8 - Salão de festas | |
9 - Salão de jogos |
1 - Castiçal | |
2 - Cano | |
3 - Chave inglesa | |
4 - Corda | |
5 - Revólver | |
6 - Faca |
Uma testemunha foi encontrada, mas ela só consegue responder se Holmes fornecer uma teoria. Para cada teoria ele deve perguntar sobre um suspeito, local e arma. A testemunha então responde com um número:
- 0 caso a teoria estiver correta;
- 1 indica que o suspeito está incorreto;
- 2 indica que o local está incorreto;
- 3 indica que a arma está incorreta.
Exemplo: Se o assassino for 2 - Chef. de Cozinha Tony Gourmet, na 2 - Cozinha e usando 4 - Corda (2, 2, 4):
Teoria: 1, 1, 1
- Retorno: 1, 2 ou 3 (todos estão incorretos)
Teoria: 1, 2, 1
- Retorno: 1 ou 3 (somente o local está correto)
Teoria: 1, 2, 4
- Retorno: 1 (somente o assassino está incorreto)
Teoria: 2, 2, 4
- Retorno: 0 (todos corretos, você solucionou o caso 😏)
Você precisa desenvolver um programa que tente resolver o problema com o menor número de perguntas realizadas a testemunha.
- Ter uma conta no GitHub;
- Realizar o
fork
deste repositório para sua conta. Assim você terá uma copia do projeto base; - Uma vez com o projeto em sua conta, realize o
clone
da mesma para codificar; - Abra a solução no VisualStudio/VisualCode (O projeto base é uma console application utilizando .Net Framework 4.6);
- Ao abrir o projeto a classe
Program.cs
terá uma instância da classeTestemunha.cs
criada,var testemunha = new Testemunha();
. Se você analisar o construtor desta classe, verá que ela irá criar um crime de forma aleatória. Portanto a testemunha já visualizou o crime e possui em sua memória um criminoso, local e arma; - Ainda na classe
Testemunha.cs
, repare que existe um método intituladoInterrogar
. Com ele podemos testar as teorias, basta passar um número que identifique um criminoso, local e arma. Que o método irá lhe responder coforme descrito logo acima na sessão Testemunha; - Portanto na classe
Program.cs
no comentárioEscreva seu código aqui.
, escreva uma algoritimo que simule um detetive realizando as perguntas utilizando o métodotestemunha.Interrogar(criminoso, local, arma)
. Toda vez que você chamar esté método, o mesmo irá contabilizar uma tentativa, repare que no final do programa existe uma linha que imprime a número de tentativa. Está linha deverá somente ser executada após o detetive realizar todas as perguntas e receber da testemunha uma resposta de número 0 (criminoso, local e arma corretos); - Após finalizar, basta subir as alterações (commit/push) para sua conta. E responder o e-mail do teste com o link da sua conta no GitHub.
- Ao codificar matenha seu código limpo e coerente. Manter padronização ajuda a equipe entender o que foi codificado, além de ajudar na manutenção futuras. Algumas dicas: ;
- A classe
Testemunha.cs
não pode ser modificada; - Qualquer duvida entre em contato: [email protected]