CS153/hw6/hw4programs/sp22_tests/maximalBlock.oat

65 lines
1.4 KiB
Text
Raw Normal View History

int findLargestBlock(int[][][] mat, int i, int j, int k, int maxsize)
{
if (i < 0 | j < 0 | k < 0) {
return 0;
}
var d = new int[7];
d[0] = findLargestBlock(mat, i, j, k - 1, maxsize);
d[1] = findLargestBlock(mat, i, j - 1, k, maxsize);
d[2] = findLargestBlock(mat, i-1, j - 1, k, maxsize);
d[3] = findLargestBlock(mat, i, j - 1, k-1, maxsize);
d[4] = findLargestBlock(mat, i-1, j - 1, k, maxsize);
d[5] = findLargestBlock(mat, i-1, j , k-1, maxsize);
d[6] = findLargestBlock(mat, i-1, j - 1, k-1, maxsize);
var size = 0;
if (mat[i][j][k] == 1) {
var min = d[0];
for (var i = 1; i < 7; i = i + 1;){
if (min > d[i]) {
min = d[i];
}
}
size = 1 + min;
}
var max = 0;
if (maxsize > size){
max = maxsize;
} else {
max = size;
}
return max;
}
int[][][] getTensor(){
return new int[][][]
{new int[][]{
new int[]{1, 0, 1},
new int[]{1, 1, 1},
new int[]{1, 1, 0}
},
new int[][]{
new int[]{1, 1, 1},
new int[]{1, 1, 1},
new int[]{1, 1, 1}
},
new int[][]{
new int[]{0, 1, 1},
new int[]{0, 1, 1},
new int[]{1, 1, 1}
}
};
}
int program()
{
var mat = getTensor();
print_string("The size of the largest cubical block of 1's is ");
return findLargestBlock(mat, 3-1, 3-1, 3-1, 0);
}