No i sort of generate them from a couple of other matrices. Some source code:
That file is self sufficient and is just to test my code. Part of the out put from the program looks like this:Code:#include <stdio.h> int main() { int smallsquarefinal[9][9][9]; int x, y, z; int a, b; int possarray[9][9]; int i; int size_of_disjoint_subset, count_disjoint_subset_row; int location[9] = {0}; int row = 0; int col = 0; int secondary_x, secondary_y, location_count; FILE *disjointsubsetoutput; FILE *possarrayoutput; if ((disjointsubsetoutput = fopen("disjointsubsetoutput", "w")) == NULL) fprintf(stderr, "Cannot open %s\n", "disjointsubsetoutput"); for (x = 0; x < 9; x++) { for (y = 0; y < 9; y++) { fprintf(disjointsubsetoutput, "\n[%d][%d] ", x, y); for (z = 0; z < 9; z++) { smallsquarefinal[x][y][z] = z + 1; fprintf(disjointsubsetoutput, "%d", smallsquarefinal[x][y][z]); } } } if ((possarrayoutput = fopen("possarrayoutput", "r")) == NULL) fprintf(stderr, "Cannot open %s\n", "possarrayoutput"); for (x = 0; x <= 8; x++) { char buf[10]; fscanf(possarrayoutput, "%s", buf); for (y = 0; y <= 8; y++) { possarray[x][y] = buf[y]-'0'; printf("%d ", possarray[x][y]); } printf("\n"); } fclose(possarrayoutput); fprintf(disjointsubsetoutput, "\nThese are the arrays to be compared (seperated by newlines):"); for (size_of_disjoint_subset = 2; size_of_disjoint_subset < 9; size_of_disjoint_subset++) { for (row = 0; row < 9; row++) { count_disjoint_subset_row = 0; for (col = 0; col < 9; col++) { location[col] = 0; if (possarray[row][col] != 0) { if(possarray[row][col] == size_of_disjoint_subset) { count_disjoint_subset_row++; location[col] = col + 1; } } } if (count_disjoint_subset_row != 0) { printf("\nsubset = %d, count = %d, row = %d, location = ", size_of_disjoint_subset, count_disjoint_subset_row, row); for (secondary_y = 0; secondary_y < 9; secondary_y++) { if(location[secondary_y] != 0) { printf("%d", location[secondary_y]); } } if (count_disjoint_subset_row >= size_of_disjoint_subset) { int disjoint_subset_row_array[count_disjoint_subset_row][9]; int no_of_rows_count = 0; printf(" *"); // At this point we have the following information: // The size of the subset "size_of_disjoint_subset" // How many occurences of the subset there are in said row "coint_disjoint_subset_row" // (This is greater than or equal to the subset size) // The corresponding row "row" // The locations of each of the possibility sets equal to the subset size "location[]" //fprintf(disjointsubsetoutput, "\n"); for (y = 0; y < 9; y++) { for (location_count = 0; location_count < 9; location_count++) { if(location[location_count] != 0 && location[location_count] - 1 == y) { printf("%d", no_of_rows_count); printf("[%d][%d] = ", row, y); for (z = 0; z < 9; z++) { disjoint_subset_row_array[no_of_rows_count][z] = smallsquarefinal[row][y][z]; } no_of_rows_count++; } } } for (a = 0; a < count_disjoint_subset_row; a++) { fprintf(disjointsubsetoutput, "\n"); for (b = 0; b < 9; b++) { fprintf(disjointsubsetoutput, "%d", disjoint_subset_row_array[a][b]); } } } } fprintf(disjointsubsetoutput, "\n"); } } printf("\n"); fclose(disjointsubsetoutput); }
And its these arrays which need to be compared. (Obviously they are all equal as i set them all for testing purposes)Code:123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789

