Introdução
O curso CS 61A da Universidade da Califórnia, Berkeley, é um curso de introdução à ciência da computação. Ele busca fornecer uma base sólida em programação, abordando conceitos fundamentais de estruturas de dados, algoritmos e paradigmas de programação. O curso é conhecido por sua ênfase em Python como a linguagem principal de programação e pela abordagem prática e desafiadora.
Fase 1: Problema 2
Implemente
boar_brawl, que recebe a pontuação do jogadorplayer_scoree a pontuação do oponenteopponent_score, e retorna o número de pontos feitos pelo Boar Brawl quando o jogador joga 0 dados.
- Boar Brawl: Jogador que rola pontuação zero do dado pontua três vezes a diferença absoluta entre o digito das dezenas da pontuação do oponente e o dígito da unidade da pontuação do jogador, ou 1, o que for maior. Se a pontuação do jogador for de dígito único (menor do que 10), o dígito das dezenas do jogador será 0.
Exemplos
-
Exemplo 1:
- A pontuação atual do jogador é de
21pontos e a da oponente é de46pontos, e o jogador da rodada escolher rodar nenhum dado (zero dados). - O dígito das dezenas da pontuação do oponente é
4e o dígito das unidades do jogador é1. - Então, o jogador ganha
3 * abs(4 - 1) = 9pontos.
- A pontuação atual do jogador é de
-
Exemplo 2:
- A pontuação atual do jogador é de
45pontos e o oponente é de52pontos, o jogador da rodada escolhe rodar nenhum dado (zero dados). - O dígito das dezenas da pontuação é
5e o das unidades do jogador é5. - Então,
3 * abs(5 - 5) = 0, o jogador ganhará1ponto.
- A pontuação atual do jogador é de
-
Exemplo 3:
- A pontuação atual do jogador é de
2pontos e a do oponente é de5pontos, o jogador da rodada escolhe rodar nenhum dado (zero dados). - O dígito das dezenas do oponente é
0e o dígito das unidades do jogador é2. - Então, o jogador ganha
3 * abs(0 - 2) = 6pontos.
- A pontuação atual do jogador é de
Dica importante!
Don't assume that scores are below 100. Write yourboar_brawlfunction so that it works correctly for any non-negative score.
Solução
A solução deste desafio é puramente matemática, e passa pelo entendimento das operações // e %, e da manipulação dos termos chamados resto e quociente.
O operando // retorna o quociente de uma divisão.
O operando % retorna o resto de uma divisão.
Segue na imagem abaixo uma representação melhor do uso destes operandos:

A partir daí, eu já posso olhar para os exemplos dados pela atividade para elaborar o algoritmo a ser utilizado para a solução desta fase do projeto.
Então, olhando para o Exemplo 1.
- Pontuação do jogador é
21pontos, quero o valor do seu dígito das unidades que é1; - Pontuação do oponente é
46pontos, quero o valor do seu dígito das dezenas que é4;
Quais operações devo fazer, usando apenas a divisão para extrair os números que quero na proposta deste desafio. Deixei uma pista na divisão do 15 ÷ 10.
- Se eu realizar a operação
21 ÷ 10e procurar pelo o seu resto, vou obter1. - Se eu realizar a operação
46 ÷ 10e procurar pelo o seu quociente, vou obter4.
Excelente!
Mas e nas situações que o valor da pontuação for maior do que 100? Igual ao colocado na terceira representação de divisão da imagem acima.
Vamos para mais uma imagem para a representação deste caso:
- Observamos que para o caso da pontuação do jogador, onde se busca o dígito das unidades,
nada se altera. - Para o caso da pontuação do oponente, precisamos realizar duas operações.
- Primeiro buscamos o seu
quocienteatravés do operador//. - Com o seu
quociente, repetimos a operação mas agora buscando o seurestoatravés do operador%.
- Primeiro buscamos o seu
A partir do entendimento do problema e da criação da solução, podemos então ir para a parte do código e testar para ver se atende todos os casos possíveis.
Solução em Python:
Aprovado em todos os testes:
Conclusão
A partir do momento que se entende o padrão, utilizar a ferramenta da linguagem de programação é o processo mais fácil da atividade. Este desafio testou muito mais a utilização de operações matemáticas para encontrar a sua solução e manter a lógica de pontuação do 'Jogo do Hog', através deste sistema Boar Brawl.
Espero que a explicação esteja clara e ajude a quem está começando. Nos vemos na próxima!



Top comments (0)