Created
November 14, 2023 19:27
-
-
Save antun/50d140a8ddb0ce05ba6c79e211c15607 to your computer and use it in GitHub Desktop.
tictactoe_combinations.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* 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