Node *build_tree(Puzzle *instance){ int recheck = 1; while(recheck == 1){ int i; recheck = 0; for(i=0;i<instance->size*instance->size;i++){ if(get_number_of_possibilities(&instance->cells[i]) == 1){ recheck = 1; int value = get_possibility(&instance->cells[i], 0); set_cell_value((&instance->cells[i])->row, (&instance->cells[i])->col, instance, value); } } } printf("Building Tree..\n"); // sort cells in increasing order of possibility list size int *hash = hash_cells(instance); Cell *sorted_list = convert_hash_to_list(hash, instance); print_puzzle(instance); struct timeval start, end; gettimeofday(&start, NULL); Node root = {instance, 0, 0, NULL}; bfs(&root, sorted_list); gettimeofday(&end, NULL); printf("\n\nAlgorithm's computational part duration :%ld\n", \ ((end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec))); }
Node *assign_children(Puzzle *instance, Cell *cell, int *number_of_children){ int i; *number_of_children = get_number_of_possibilities(cell); Puzzle *children = malloc(sizeof(Puzzle)**number_of_children); Node *children_node = malloc(sizeof(Node)**number_of_children); for(i=0;i<*number_of_children;i++){ children[i].size = instance->size; int j, k; children[i].cells = malloc(sizeof(Cell)*instance->size*instance->size); for(j=0;j<instance->size*instance->size;j++){ children[i].cells[j].possibility_list = malloc(sizeof(int)*(instance->size+1)); for(k=0;k<=instance->size;k++){ memcpy(&children[i].cells[j].possibility_list[k], &instance->cells[j].possibility_list[k], sizeof(int)); } memcpy(&children[i].cells[j].value, &instance->cells[j].value, sizeof(int)); } set_cell_value(cell->row, cell->col, &children[i], get_possibility(cell, i)); children_node[i].instance = &children[i]; children_node[i].children = NULL; } return children_node; }
TEST(GET_CELL_VALUE,VALUE) { ASSERT_EQ(0,set_cell_value("C:\\Users\\l00219108\\Documents\\Visual Studio 2010\\Projects\\csvapi\\Debug\\test.csv", 1, 2, "abc")); ASSERT_EQ(0,get_cell_value("C:\\Users\\l00219108\\Documents\\Visual Studio 2010\\Projects\\csvapi\\Debug\\test.csv", 1, 2, value)); EXPECT_STREQ("abc",value); }