Algorithm to figure out if someone has won in a game of tic-tac-toe.
Algorithm to figure out if someone has won in a game of tic-tac-toe.
package com.omt.learn.algo; public class IsSomeOneWonTicTacToe { public static void main(String[] args) { char[][] board = new char[][] { { 'X', 'X', 'X' }, { 'O', 'X', 'O' }, { 'X', 'O', 'O' } }; System.out.println(isSomeoneWonGame(board)); // test win col board = new char[][] { { 'X', 'O', 'X' }, { 'X', 'X', 'O' }, { 'X', 'O', 'O' } }; System.out.println(isSomeoneWonGame(board)); // test win diag board = new char[][] { { 'X', 'O', 'O' }, { 'O', 'X', 'O' }, { 'X', 'O', 'X' } }; System.out.println(isSomeoneWonGame(board)); // test no win board = new char[][] { { 'X', 'O', 'X' }, { 'O', 'O', 'X' }, { 'X', 'X', 'O' } }; System.out.println(isSomeoneWonGame(board)); // test win col O board = new char[][] { { 'X', 'O', 'O' }, { 'O', 'X', 'O' }, { 'X', 'O', 'O' } }; System.out.println(isSomeoneWonGame(board)); } public static boolean isSomeoneWonGame(char[][] game) { int top = 1; int bottom = 1; int left = 1; int right = 1; int topLeft = 1; int topRight = 1; for (int i = 1; i < 3; i++) { if (game[0][i] == game[0][i - 1]) { top++; } if (game[i][0] == game[i - 1][0]) { left++; } if (game[2][i] == game[2][i - 1]) { bottom++; } if (game[i][2] == game[i - 1][2]) { right++; } if (game[i][i] == game[i - 1][i - 1]) { topLeft++; } if (game[i][2 - i] == game[i - 1][2 - i + 1]) { topRight++; } if (topLeft == 3 || topRight == 3 || top == 3 || left == 3 || right == 3 || bottom == 3) { return true; } } return false; } }