Calculadora de pontuação do Yahtzee

Em uma partida de Yahtzee, o jogador precisa marcar pontos lançando cinco dados e tentando obter uma combinação específica em cada um dos treze turnos do jogo.

TurnoNomePontos
1UnsSoma de todos os dados que mostram 1
2DoisSoma de todos os dados que mostram 2
3TrêsSoma de todos os dados que mostram 3
4QuatrosSoma de todos os dados que mostram 4
5CincosSoma de todos os dados que mostram 5
6SeisSoma de todos os dados que mostram 6
7TrincaSoma de todos os dados se houver pelo menos três dados iguais
8QuadraSoma de todos os dados se houver pelo menos quatro dados iguais
9Full House25 pontos se houver dois dados de um número e três dados de outro número
10Sequência menor30 pontos se houver uma sequência de pelo menos quatro dados (1,2,3,4 ou 2,3,4,5 ou 3,4,5,6)
11Sequência maior40 pontos se houver uma sequência de cinco dados (1,2,3,4,5 ou 2,3,4,5,6)
12Yahtzee50 pontos se houver cinco dados iguais
13ChanceSoma de todos os dados

Se, durante um turno, os dados lançados não formarem uma combinação válida, a pontuação desse turno será igual a 0. Se o total de pontos obtidos durante os seis primeiros turnos for igual ou superior a 63, serão adicionados 35 pontos à pontuação final.

Você recebe um array arr que contém 13 arrays; cada array representa um conjunto de cinco dados a ser verificado para determinar a combinação do turno, de acordo com a ordem e a descrição apresentadas na tabela acima. Você deve implementar uma função que retorne um inteiro correspondente à pontuação final obtida pelo jogador.

Exemplo

yahtzeeScoreCalc([
  [1, 3, 1, 1, 2], // Aces
  [1, 2, 4, 5, 6], // Twos
  [6, 3, 4, 3, 4], // Threes
  [3, 1, 1, 4, 4], // Fours
  [5, 5, 5, 5, 3], // Fives
  [6, 2, 6, 6, 6], // Sixes
  [1, 4, 4, 2, 1], // Three of a Kind
  [3, 3, 3, 3, 3], // Four of a Kind
  [2, 2, 1, 1, 2], // Full House
  [6, 1, 2, 3, 4], // Lower Straight
  [2, 3, 5, 4, 1], // Higher Straight
  [4, 4, 4, 4, 4], // Yahtzee
  [3, 3, 4, 5, 6], // Chance
]) ➞ 279

// Turn 1 ➞ There are 3 dice showing "1" ➞ 3 pts.
// Turn 2 ➞ There is 1 die showing "2" ➞ 2 pts.
// Turn 3 ➞ There are 2 dice showing "3" ➞ 6 pts.
// Turn 4 ➞ There are 2 dice showing "4" ➞ 8 pts.
// Turn 5 ➞ There are 4 dice showing "5" ➞ 20 pts.
// Turn 6 ➞ There are 4 dice showing "6" ➞ 24 pts.
// Turn 7 ➞ There aren't at least 3 dice the same ➞ 0 pts.
// Turn 8 ➞ There are 4 dice the same ➞ 15 pts. (sum of all dice)
// Turn 9 ➞ There is a Full House (two "1" and three "2") ➞ 25 pts.
// Turn 10 ➞ There is a Lower Straight (1,2,3,4) ➞ 30 pts.
// Turn 11 ➞ There is a Higher Straight (1,2,3,4,5) ➞ 40 pts.
// Turn 12 ➞ Yahtzee!!! There are 5 dice the same ➞ 50 pts.
// Turn 13 ➞ Sum of all dice ➞ 21 pts.

// The sum of the points made in the first six turns is:
// 3 + 2 + 6 + 8 + 20 + 24 = 63
// There is a bonus of 35 points
// The sum of the points made in the other seven turns is:
// 0 + 15 + 25 + 30 + 40 + 50 + 21 = 181

// The total is equal to:
// 63 + 35 + 181 = 279

Observações

  • Ao jogar para obter uma Trinca, você deve procurar pelo menos três dados iguais, e não exatamente três. A mesma regra se aplica à combinação Quadra e à combinação Sequência menor (que também é válida se for obtida por meio de uma Sequência maior)
  • Um Full House é válido se for obtido com uma combinação de dois valores diferentes: cinco dados iguais não formam um Full House.
  • Obviamente, esta é uma versão de Yahtzee adaptada para este desafio específico: você pode encontrar as regras oficiais (e uma tabela mais clara) na aba Resources.