Generate a list of all unique Tic Tac Toe boards

前端 未结 7 2075

I would like to generate a text file containing all 19,683 Tic-Tac-Toe board layouts in the structure of 0 = Blank, 1 = X, and 2 = O. Unfortunately math is not my strong su

7条回答
  •  时光取名叫无心
    2020-12-30 09:39

    Since you want board layouts, there's only a small number of them (19683).

    You can just brute-force generate all of these. Each box only has 3 possibilities. And there are 9 boxes, just run through all of them.

    EDIT:

    int c = 0;
    while (c < 262144){
        bool valid = (c & 3) < 3;
        valid &= ((c >>  2) & 3) < 3;
        valid &= ((c >>  4) & 3) < 3;
        valid &= ((c >>  6) & 3) < 3;
        valid &= ((c >>  8) & 3) < 3;
        valid &= ((c >> 10) & 3) < 3;
        valid &= ((c >> 12) & 3) < 3;
        valid &= ((c >> 14) & 3) < 3;
        valid &= ((c >> 16) & 3) < 3;
    
        if (valid){
            int i = c;
            int j = 0;
            while (j < 9){
                cout << (i & 3) << " ";
                i >>= 2;
                j++;
            }
            cout << endl;
        }
    
        c++;
    }
    

    This will print out all 19,683 board layouts. I'm not sure what format you want, but it should be fairly easy to extract that from the output.

提交回复
热议问题