DEV Community

Matheus 🇧🇷
Matheus 🇧🇷

Posted on

CS61A: Projeto Hog (Parte 2)

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 jogador player_score e a pontuação do oponente opponent_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 é de 46 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.
  • Exemplo 2:
    • A pontuação atual do jogador é de 45 pontos e o oponente é de 52 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.
  • Exemplo 3:
    • A pontuação atual do jogador é de 2 pontos e a do oponente é de 5 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.

Dica importante!
Don't assume that scores are below 100. Write your boar_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:
três operações de divisão

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 obter 1.
  • Se eu realizar a operação 46 ÷ 10 e procurar pelo o seu quociente, vou obter 4.

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:

duas operações de divisão

  • 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 seu resto através do operador %.

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:

Solução em Python

Aprovado em todos os testes:

Casos de Teste aprovados

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)