<p>Given a Tic-Tac-Toe board as a string array <code>board</code>, return <code>true</code> if and only if it is possible to reach this board position during the course of a valid tic-tac-toe game.</p>
<p>The board is a <code>3 x 3</code> array that consists of characters <code>''</code>, <code>'X'</code>, and <code>'O'</code>. The <code>''</code> character represents an empty square.</p>
<p>Here are the rules of Tic-Tac-Toe:</p>
<ul>
<li>Players take turns placing characters into empty squares <code>''</code>.</li>
<li>The first player always places <code>'X'</code> characters, while the second player always places <code>'O'</code> characters.</li>
<li><code>'X'</code> and <code>'O'</code> characters are always placed into empty squares, never filled ones.</li>
<li>The game ends when there are three of the same (non-empty) character filling any row, column, or diagonal.</li>
<li>The game also ends if all squares are non-empty.</li>
<li>No more moves can be played if the game is over.</li>