The following code should print multiple lines of
1
2
3
mixed with lines of
0
However, what it actually prints is multiple lines of
1
1
1
1
3
mixed with lines of
0
Code:
boxes = []
for y in range(len(hmap)):
for x in range(len(hmap[y])):
w = 4
h = 4
minh = hmap[y][x]
maxh = hmap[y][x]
htemp = h
while True:
if y + htemp > len(hmap): break
passes = False
wtemp = w
while True:
if x + wtemp > len(hmap[y]): break
for c in range(x, x+wtemp):
for r in range(y, y+htemp):
minh = min(minh,hmap[c][r])
maxh = max(maxh,hmap[c][r])
if maxh - minh > v:
print('1')
break
else:
print('2')
break
else:
print('3')
break
print('0')
passes = True
wtemp += 1
if passes:
boxes.append([x,y,wtemp-1,htemp])
htemp += 1
if not passes: break
hmapis a 2D array of float values that is passed to the function this code is in.
This segment of code is supposed to generate a series of rectangles for other (irrelevant) parts of code to use later on. Rectangles that "pass" (min/max values don't have a difference greater than v) cause
0
to be printed. Rectangles that don't "pass" should cause
1
2
3
to be printed as the nested for and while loops break. Why doesn't it work?
hmapandvwhich causes this to fail?hmapwill work, as long as it is an array of equally long arrays (which contain float values).vis also a float, so set it to anything as well.