¡Jugando a RisiKo!

En un juego de RisiKo! (la versión italiana del popular juego de mesa Risk!), los jugadores lanzan dados de seis caras para conquistar territorios alrededor de un mapa del mundo.

Cuando dos jugadores se disputan un territorio, hay una batalla y lanzan de 1 a 3 dados, donde cada dado representa un ejército enviado a luchar. Para establecer quién pierde ejércitos después de la batalla, los dados se comparan comenzando por el valor más alto y continuando con las comparaciones en orden descendente (eliminando los dados sobrantes si la cantidad de dados lanzados por los dos jugadores es diferente).

Al comparar las tiradas, en cada comparación el dado del jugador atacante debe tener un valor mayor que el dado del defensor para ganar la lucha. En caso de empate, el defensor gana esa lucha. El perdedor solo pierde 1 ejército por comparación.

Dados dos arreglos att (tiradas del atacante) y def (tiradas del defensor), implementa una función que devuelva como entero la cantidad de ejércitos perdidos por el defensor.

Ejemplos

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

Notas

  • Cuando dos dados comparados tienen el mismo valor, el jugador que defiende gana la lucha (consulta el ejemplo n.º 2).
  • Cuando la cantidad de tiradas es diferente entre los dos jugadores, la cantidad de comparaciones que se deben realizar es igual a la menor cantidad de dados lanzados (consulta los ejemplos n.º 2 y n.º 3).
  • Puedes esperar únicamente entradas válidas: cada arreglo tendrá al menos un dado y no más de tres dados, con valores del 1 al 6.