I have found a function that produces more or less what I want, however it could definitely be improved.
Pseudocode:
function f(x, y):
if x mod size_of_zones == 0 or y mod size_of_zones == 0:
return 0
elif x % (a number between the maximum and minimum block sizes, randomly picked but the same for each block) == 0:
return 0
elif y % (a number between the maximum and minimum block sizes, randomly picked but the same for each block) == 0:
return 0
else:
return 1
My code for a number between the maximum and minimum block sizes, randomly picked but the same for each block
was this:
shuffled_list_of_integers_between_min_and_max_block_sizes[(y floordiv zone_size) mod maximum_block_size]
for x
and
shuffled_list_of_integers_between_min_and_max_block_sizes[(x floordiv zone_size) mod maximum_block_size]
for y
.