Skip to content

Instantly share code, notes, and snippets.

@antun
Created November 14, 2023 19:27
Show Gist options
  • Save antun/50d140a8ddb0ce05ba6c79e211c15607 to your computer and use it in GitHub Desktop.
Save antun/50d140a8ddb0ce05ba6c79e211c15607 to your computer and use it in GitHub Desktop.
tictactoe_combinations.js
/*
* Write a program that plays every possible tic-tac-toe game, and then prints the number of valid, completed games
*/
var gameCount = 0;
var board = [null, null, null, null, null, null, null, null, null];
var player0Pointer = 0;
var player1Pointer = board.length-1;
var currentPlayer = 0;
function isSame(a,b,c) {
return (a == b && b == c && a == c);
}
function isFull(board) {
isFull = true;
for (var i in board) {
if (board[i] === null) {
isFull = false;
break;
}
}
return isFull;
}
function isValidCompletedGame(board) {
return isSame(board[0], board[1], board[2])
|| isSame(board[3], board[4], board[5])
|| isSame(board[6], board[7], board[8])
|| isSame(board[0], board[3], board[6])
|| isSame(board[1], board[4], board[7])
|| isSame(board[2], board[5], board[8])
|| isSame(board[0], board[4], board[8])
|| isSame(board[2], board[4], board[6])
|| isFull(board);
}
function findFirstAvailable(board) {
for (var i=0; i<board.length; i++) {
if (board[i] === null) {
console.log('findFirstAvailable', i);
return i;
}
}
}
do {
console.log('pointers', player0Pointer, player1Pointer);
if (currentPlayer === 0) {
board[player0Pointer] = 'O';
currentPlayer = 1;
player0Pointer += 1;
} else {
board[player1Pointer] = 'X';
currentPlayer = 0;
player1Pointer = findFirstAvailable(board);
}
console.log('board', board);
} while(isValidCompletedGame(board));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment