0% found this document useful (0 votes)
73 views4 pages

Tictactoe 1

This document describes creating a graph to represent all possible game states in tic-tac-toe. It defines variables to represent the number of moves made, links between game states, winning positions, and the binary representation of board positions. It then loops through all possible board configurations, creating graph vertices for each state and arcs between states as the game is played. It saves the completed game graph to a file.

Uploaded by

lokedhs
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
73 views4 pages

Tictactoe 1

This document describes creating a graph to represent all possible game states in tic-tac-toe. It defines variables to represent the number of moves made, links between game states, winning positions, and the binary representation of board positions. It then loops through all possible board configurations, creating graph vertices for each state and arcs between states as the game is played. It saves the completed game graph to a file.

Uploaded by

lokedhs
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

§1 TICTACTOE1 INTRO 1

April 29, 2010 at 16:43

1. Intro. Creating a graph for the distinct positions in all games of tic-tac-toe.
#define rank z.I /∗ number of moves made ∗/
#define link y.V /∗ next vertex of same rank ∗/
#define head x.V /∗ first vertex of given rank ∗/
#define winner w.I /∗ is this a winning position? ∗/
#define bitcode v.I /∗ binary representation of this position ∗/
#include "gb_graph.h"
#include "gb_save.h"
Vertex ∗ pos [1 ≪ 18];
int move [9];
int win [16] = { /∗ the board is now numbered 263/917/584 ∗/
#
05040, # 10011, # 00504, # 04101, # 10044, # 01410, # 14400, # 11100};
int place [18] = {4, 4, 9, 9, 6, 6, 1, 1, 8, 8, 10, 10, 2, 2, 0, 0, 5, 5};
main ( )
{
register k, l, board ;
Vertex ∗ u, ∗v;
Graph ∗ g = gb new graph (5478);
strcpy (g⃗ util types , "ZIIVVIZZZZZZZZ");
strcpy (g⃗ id , "tictactoe");
for (k = 0; k < 8; k ++ ) win [k + 8] = win [k] ≪ 1;
l = board = 0;
pos [0] = u = v = g⃗ vertices ;
v⃗ rank = v⃗ winner = v⃗ bitcode = 0;
v⃗ link = Λ, (g⃗ vertices + 0)⃗ head = v;
v⃗ name = gb save string ("␣␣␣/␣␣␣/␣␣␣");
newlev : move [l] = 3;
tryit :
if (¬(board & move [l])) {
board += move [l] & (l & 1 ? # 55555 : # aaaaa);
if (pos [board ]) {
gb new arc (v, pos [board ], 1);
goto unmove ;
}
pos [board ] = ++ u;
u⃗ rank = l + 1, u⃗ winner = 0, u⃗ bitcode = board ;
u⃗ name = gb save string ("␣␣␣/␣␣␣/␣␣␣");
for (k = 0; k < 18; k ++ )
if (board & (1 ≪ k)) u⃗ name [place [k]] = ((l ⊕ k) & 1 ? ’O’ : ’X’);
u⃗ link = (g⃗ vertices + l + 1)⃗ head , (g⃗ vertices + l + 1)⃗ head = u;
gb new arc (v, u, 1);
for (k = 0; k < 16; k ++ )
if ((board & win [k]) ≡ win [k]) {
u⃗ winner = 1;
goto unmove ;
}
if (l ≡ 8) goto unmove ;
l ++ , v = u;
goto newlev ;
2 INTRO TICTACTOE1 §1

}
tryagain : move [l] ≪= 2;
if (move [l] < (1 ≪ 18)) goto tryit ;
if (l > 0) {
l −− , v = pos [board & ∼move [l]];
unmove : board &= ∼move [l];
goto tryagain ;
}
save graph (g, "/tmp/tictactoe.gb");
}
§2 TICTACTOE1 INDEX 3

2. Index.
bitcode : 1.
board : 1.
gb new arc : 1.
gb new graph : 1.
gb save string : 1.
Graph : 1.
head : 1.
id : 1.
k: 1.
l: 1.
link : 1.
main : 1.
move : 1.
name : 1.
newlev : 1.
place : 1.
pos : 1.
rank : 1.
save graph : 1.
strcpy : 1.
tryagain : 1.
tryit : 1.
unmove : 1.
util types : 1.
Vertex : 1.
vertices : 1.
win : 1.
winner : 1.
TICTACTOE1

Section Page
Intro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3

You might also like