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_score
e 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
21
pontos e a da oponente é de46
pontos, e o jogador da rodada escolher rodar nenhum dado (zero dados). - O dígito das dezenas da pontuação do oponente é
4
e o dígito das unidades do jogador é1
. - Então, o jogador ganha
3 * abs(4 - 1) = 9
pontos.
- A pontuação atual do jogador é de
-
Exemplo 2:
- A pontuação atual do jogador é de
45
pontos e o oponente é de52
pontos, o jogador da rodada escolhe rodar nenhum dado (zero dados). - O dígito das dezenas da pontuação é
5
e o das unidades do jogador é5
. - Então,
3 * abs(5 - 5) = 0
, o jogador ganhará1
ponto.
- A pontuação atual do jogador é de
-
Exemplo 3:
- A pontuação atual do jogador é de
2
pontos e a do oponente é de5
pontos, o jogador da rodada escolhe rodar nenhum dado (zero dados). - O dígito das dezenas do oponente é
0
e o dígito das unidades do jogador é2
. - Então, o jogador ganha
3 * abs(0 - 2) = 6
pontos.
- A pontuação atual do jogador é de
Dica importante!
Don't assume that scores are below 100. Write yourboar_brawl
function 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 é
21
pontos, quero o valor do seu dígito das unidades que é1
; - Pontuação do oponente é
46
pontos, 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 ÷ 10
e procurar pelo o seu resto, vou obter1
. - Se eu realizar a operação
46 ÷ 10
e 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
quociente
através do operador//
. - Com o seu
quociente
, repetimos a operação mas agora buscando o seuresto
atravé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)