from math import floor from tectonic import * def build_and_print_grid(size_x, size_y): print('building ' + str(size_x) + 'x' + str(size_y) + '...') cells_count = size_x * size_y if cells_count > 47: print('too big') else: tab, formTab = generate(size_x, size_y) if tab == 'Error': error = '' for elt in formTab: for i in elt: error += str(i) print( 'Error : no shape placement configuration found - Code error : ' + str(size_y) + str(size_x) + error) else: print('values: ' + str(tab)) print('blocks: ' + str(formTab)) # size template = str(size_x)+'x'+str(size_y) template += ';' # blocks max_block_index = 0 for line in formTab: for block in line: template += chr(block+64) if (block > max_block_index): max_block_index = block template += ';' # values empty_cells_count = 0 for line in tab: for cell in line: template += str(cell) if (cell == 0): empty_cells_count += 1 size = '' if (cells_count < 26): # < 5x5 size = 'small' else: if (cells_count < 37): # < 6x6 size = 'medium' else: size = 'large' ratio = floor(100 * empty_cells_count / cells_count) level = '' if (ratio < 70): # < 5x5 level = 'easy' else: if (ratio < 80): # < 6x6 level = 'medium' else: level = 'hard' debug = '' debug += ' (size:'+size+')' debug += ' (level:'+level+')' # debug += ' (blocks:' + str(max_block_index)+')' # debug += ' (empty:'+str(empty_cells_count)+')' # debug += ' (ratio:'+str(ratio)+')' print('template:' + debug + ' ' + template) size_min = 4 size_max = 9 for count in range(5): for size_x in range(size_min, size_max + 1): for size_y in range(size_min, size_max + 1): build_and_print_grid(size_x, size_y)