示例#1
0
文件: puzzle.c 项目: jmp3833/SE350
op_result add_digit(int row, int col, int digit) {
	
	if(in_range(row)){
		if(in_range(col)){
			if(in_range(digit)){
				
				if(puzzle[row][col] != 0){
					return OP_OCCUPIED;
				}
				if((row_contains(row,digit))||(col_contains(col,digit))){
					return OP_ILLEGAL;
					
				}
				
				if(region_contains(row,col,digit)){
					return OP_ILLEGAL;
				}
				
				puzzle[row][col] = digit;		
				return OP_OK;
				
			}
		}
	}

	return OP_BADARGS ;
}
示例#2
0
文件: puzzle.c 项目: jmp3833/SE350
void configure(FILE *puzzle_file) {

	char line[5];//line buffer
	int row;
	int column;
	int value;
	int line_count = 0;
	
	while(( fgets(line,5,puzzle_file)) != NULL){
		
	
		row = line[0]-'0';
		column = line[1]-'0';
		value = line[2]-'0';
	
		
		if(!in_range(row) || !in_range(column) || !in_range(value)){
			printf("Illegal format in configuration file at line %d ", line_count);
			exit(1);
		}
	
		if((puzzle[row][column] != 0)||(row_contains(row,value))||(col_contains(column,value))||(region_contains(row,column,value))){
			printf("Illegal placement in configuration file at line %d ",line_count);
			exit(1);
		}
		
	
		
	
		puzzle[row][column] = value;
		fixed[row][column] = TRUE;	
		line_count += 1;
	}

}
示例#3
0
unsigned int sudoku_correct(char** arr, unsigned int x, unsigned int y) {
    return !(row_contains(arr, x, y) || col_contains(arr, x, y) || square_contains(arr, x, y));
}