char* RubiksCube::get_notation() { /*You must pass the cube's position as stdin as so: UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR */ char *state = new char[70]; sprintf(state, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\0", find_edge("UF"), find_edge("UR"), find_edge("UB"), find_edge("UL"), find_edge("DF"), find_edge("DR"), find_edge("DB"), find_edge("DL"), find_edge("FR"), find_edge("FL"), find_edge("BR"), find_edge("BL"), find_corner("UFR"), find_corner("URB"), find_corner("UBL"), find_corner("ULF"), find_corner("DRF"), find_corner("DFL"), find_corner("DLB"), find_corner("DBR") ); return state; }
/* Choose a move for the computer. */ void computer_move(void) { int square; int row, col; /* Use first strategy rule that returns valid square */ square = find_win(computer); if (!square) square = find_win(user); if (!square) square = middle_open(); if (!square) square = find_corner(); if (!square) square = find_side(); printf("\nI am choosing square %d!\n", square); row = (square - 1) / 3; col = (square - 1) % 3; board[row][col] = computer; return; }
preprocess() { find_corner(); find_avoid_area(); find_wall_cap(); get_goal_p(); calc_max_value(); /* by Y.Murase */ find_all_avoid(); }
int play_ttt(int turn) { unsigned char len_resp[128]; //unsigned int resp_len = 0; //unsigned char *resp = NULL; char *select_guess_num_game = "3\n"; cgc_memset(len_resp, 0, 128); read_until_game_prompt(); length_read(STDIN, len_resp, cgc_strlen("Game # ")); transmit_all(STDOUT, select_guess_num_game, cgc_strlen(select_guess_num_game)); if (turn == COMPUTER) { switch(find_corner()) { case 0: transmit_all(STDOUT, "1,1\n", 4); transmit_all(STDOUT, "0,2\n", 4); transmit_all(STDOUT, "1,0\n", 4); transmit_all(STDOUT, "2,2\n", 4); return 0; case 1: transmit_all(STDOUT, "1,1\n", 4); transmit_all(STDOUT, "0,1\n", 4); transmit_all(STDOUT, "1,0\n", 4); transmit_all(STDOUT, "2,2\n", 4); return 1; case 2: transmit_all(STDOUT, "1,1\n", 4); transmit_all(STDOUT, "1,0\n", 4); transmit_all(STDOUT, "2,2\n", 4); transmit_all(STDOUT, "0,2\n", 4); return 2; case 3: transmit_all(STDOUT, "1,1\n", 4); transmit_all(STDOUT, "2,1\n", 4); transmit_all(STDOUT, "0,2\n", 4); transmit_all(STDOUT, "1,0\n", 4); return 3; } } else { transmit_all(STDOUT, "2,0\n", 4); transmit_all(STDOUT, "2,1\n", 4); transmit_all(STDOUT, "0,0\n", 4); transmit_all(STDOUT, "1,2\n", 4); transmit_all(STDOUT, "0,2\n", 4); return 5; } return -1; }