Download
#!/usr/bin/env python3

import random, sys, os
from collections import namedtuple

PNAMES = ['numinstances', 'planksmin', 'planksmax',
          'lenmin', 'lenmax', 'thickmin', 'thickmax',
          'vgapmin', 'vgapmax']

Params = namedtuple('Params',PNAMES)

arg_count_ok = len(sys.argv) == 1+len(PNAMES)
if ("-h" in sys.argv) or ("--help" in sys.argv) or not arg_count_ok:
    print("USAGE:  " + sys.argv[0] + " " + " ".join(PNAMES))
    exit()

template = """language ESSENCE' 1.0
letting thickness = {thick}
letting vertical_gap = {vgap}
letting maxwidth = {maxw}
letting minshelves = 0
letting lengths = [{lengths}]
"""

p = Params(*map(int,sys.argv[1:]))

print(p)

for i in range(p.numinstances):
    nplanks = random.randrange(p.planksmin,p.planksmax)
    print("Chosen %d planks" % nplanks)
    maxplanklen_hehe = random.randrange(int((p.lenmin+p.lenmax)/2),p.lenmax)
    plengths = [random.randrange(p.lenmin,maxplanklen_hehe) for _ in range(nplanks)]
    thick = random.randrange(p.thickmin,p.thickmax)
    vgap = random.randrange(p.vgapmin,p.vgapmax)
    maxw = random.choice([0,0,0,random.randrange(min(plengths)*2)])
    lengths = ",".join([str(x) for x in plengths])
    fname = "planks_{:03d}_{:02d}.param".format(i,nplanks)
    fbody = template.format(
        thick=thick,
        vgap=vgap,
        maxw=maxw,
        lengths=lengths
        )
    with open(os.path.join("instances",fname),"wt") as f:
        f.write(fbody)