Jogando RisiKo!

Em um jogo de RisiKo! (a versão italiana do popular jogo de tabuleiro Risk!), os jogadores lançam dados de seis lados para conquistar territórios ao redor de um mapa-múndi.

Quando dois jogadores disputam um território, há uma batalha e eles lançam de 1 a 3 dados, sendo cada dado um exército enviado para lutar. Para estabelecer quem perde exércitos após a batalha, os dados são comparados começando pelo maior valor e prosseguindo com as comparações em ordem decrescente (eliminando os dados excedentes se a quantidade de dados lançados pelos dois jogadores for diferente).

Quando as rolagens são comparadas, em cada comparação o dado do jogador atacante deve ter um valor maior que o dado do defensor para vencer a luta. Em caso de empate, o defensor vence a luta individual. O perdedor perde apenas 1 exército por comparação.

Dados dois arrays attacker (rolagens do atacante) e defender (rolagens do defensor), implemente uma função que retorne a quantidade de exércitos perdidos pelo defensor como um número inteiro.

Exemplos

risiko([3, 6, 4], [2, 5, 3]) ➞ 3
# Comparison 1:
# ATT(6) vs. DEF(5): DEF loses an army
# Comparison 2:
# ATT(4) vs. DEF(3): DEF loses an army
# Comparison 3:
# ATT(3) vs. DEF(2): DEF loses an army

risiko([3, 6], [6, 4, 4]) ➞ 0
# Comparison 1:
# ATT(6) vs. DEF(6): ATT loses an army
# Comparison 2:
# ATT(3) vs. DEF(4): ATT loses an army

risiko([3, 1], [1]) ➞ 1
# Comparison 1:
# ATT(3) vs. DEF(1): DEF loses an army

Observações

  • Quando dois dados comparados têm o mesmo valor, o jogador que defende vence a luta (consulte o exemplo n.º 2).
  • Quando o número de rolagens é diferente entre os dois jogadores, o número de comparações a realizar é igual à menor quantidade de dados rolados (consulte os exemplos n.º 2 e n.º 3).
  • Você pode esperar apenas entradas válidas: cada array terá pelo menos um dado e no máximo três dados, com valores de 1 a 6.