Skip to content
Snippets Groups Projects
generate.py 2.37 KiB
Newer Older
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)