
-----------------------------------
SilverSprite
Fri Jul 25, 2003 1:01 am

Someone -H-E-L-P--M-E- with tic tac toe games
-----------------------------------
I'm writing a tic tac toe program to calculate the total number of various games assuming that x starts first. Anyways my program must double count somewhere.. someone help???? I'll post both turing and c++ sources.

UNCOMMENT THE TURING COMMENTS TO SEE THE PROGRAM AT WORK

var count := 0

var grid : array 1 .. 3, 1 .. 3 of int
for i : 1 .. 3
    for j : 1 .. 3
        grid (i, j) := 0
    end for
end for

procedure drawboard
    for i : 1 .. 3
        for j : 1 .. 3
            put grid (j, i), " " ..
        end for
        put ""
    end for
    put count
end drawboard

function check : boolean
    for j : 1 .. 2
        for i : 1 .. 3
            if grid (1, i) = j and grid (2, i) = j and grid (3, i) = j then
                result true
            end if
            if grid (i, 1) = j and grid (i, 2) = j and grid (i, 3) = j then
                result true
            end if
        end for
        if grid (1, 1) = j and grid (2, 2) = j and grid (3, 3) = j then
            result true
        elsif grid (3, 1) = j and grid (2, 2) = j and grid (1, 3) = j then
            result true
        end if
    end for
    result false
end check

function checkall : boolean
    for i : 1 .. 3
        for j : 1 .. 3
            if grid (j, i) = 0 then
                result false
            end if
        end for
    end for
    result true
end checkall

procedure recurse (k : int)
    put k
    delay (100)
    if check then
        count += 1
        return
    end if
    for i : 1 .. 3
        for j : 1 .. 3
            if grid (j, i) = 0 then
                if (k mod 2 = 1) then
                    grid (j, i) := 2

                    %drawboard
                    %delay (750)
                    %cls

                    recurse (k + 1)
                    grid (j, i) := 0

                    %drawboard
                    %delay (750)
                    %cls

                else
                    grid (j, i) := 1

                    %drawboard
                    %delay (750)
                    %cls

                    recurse (k + 1)
                    grid (j, i) := 0

                    %drawboard
                    % delay (750)
                    % cls

                end if
            end if
        end for
    end for
    if checkall then
        count += 1
    end if
end recurse

for i : 1 .. 3
    for j : 1 .. 3
        grid (j, i) := 1

        %drawboard
        %delay (750)
        %cls

        recurse (1)
        grid (j, i) := 0

        %drawboard
        %delay (750)
        %cls

    end for
end for
put count



I HAVENT GOTTEN CLEARSCREEN OR DELAY TO WORK ON C++ SO DONT UNCOMMENT

#include 
using namespace std;

int count, grid[3][3];

/*void drawboard()
{
    for (int i=0; i