Calcula el resultado de una partida de Hex / Polygon.
El juego de mesa abstracto conocido como Hex / Polygon / CON-TAC-TIX es bastante sencillo en cuanto a reglas, aunque complejo en la práctica. Dos jugadores colocan piedras sobre un paralelogramo con casillas hexagonales. Gana quien conecte antes sus piedras con el lado opuesto. Los cuatro lados del paralelogramo se reparten entre los dos jugadores (es decir, un jugador recibe un lado y el lado directamente opuesto a este, y el otro jugador recibe los otros dos lados).
Tu objetivo es crear un programa que, dada una representación sencilla de un tablero, calcule el ganador (o la ausencia de ganador). Ten en cuenta que no todas las partidas tienen por qué ser «justas». (Por ejemplo, los jugadores pueden tener distinta cantidad de piezas o el tablero puede tener una anchura y una altura diferentes).
Los tableros tienen este aspecto:
. O . X .
. X X O .
O O O X .
. X O X O
X O O O X
El «jugador O» juega de arriba abajo y el «jugador X» juega de izquierda a derecha.
En el ejemplo anterior, O ha conectado de izquierda a derecha, pero nadie ha ganado, ya que O no conectó arriba con abajo.
Es posible que te des cuenta de que algunos casos de prueba parecen injustos. Sin embargo, puede que lo sean de forma legítima. Por ejemplo, es habitual dar a los jugadores jóvenes o principiantes n piezas adicionales en posiciones fijas del tablero, así que las cantidades de piezas pueden no coincidir en una partida que por lo demás es totalmente legal.
En cualquier caso, a este ejercicio solo le importa determinar un ganador para una partida que puede tener diversos parámetros, como la longitud del tablero y las piezas adicionales. No le interesa ningún otro estado de la partida, como quién movió dónde, cuándo o de quién es el turno.
Así que no te dejes desconcertar por esas partidas aparentemente injustas.
Regístrate en Exercism para aprender y dominar Scala con 95 ejercicios y mentoría humana real, todo gratis.