import os
import random
import sys

MAX_LEN = 1000
MAX_N = (MAX_LEN-1)/3

CASE = 1
DEST = os.path.join(os.getcwd(), '../data/secret')

def next_file(short_desc=None, long_desc=None):
    global CASE
    basename = os.path.join(DEST, '%02d' % CASE)
    CASE += 1
    if short_desc is not None:
        basename += '-' + short_desc
    if long_desc is not None:
        with open(basename+'.desc', 'w') as desc_out:
            desc_out.write(long_desc)
    return open(basename+'.in', 'w')

def enc(x):
    return 'S('*x + '0' + ')'*x

def save_case(x, y, short_desc=None, long_desc=None, shuffle_adj_list=True):
    X = enc(x)
    Y = enc(y)
    assert 1 <= len(X) <= MAX_LEN
    assert 1 <= len(Y) <= MAX_LEN
    sys.stderr.write('save case %d x %d\n' % (x, y))
    f = next_file(short_desc, long_desc)
    f.write('%s\n' % X)
    f.write('%s\n' % Y)
    f.close()

    
def random_case():
    save_case(random.randint(0, MAX_N), random.randint(0, MAX_N), short_desc='random')


def main():
    random.seed(13)
    save_case(1, 1)
    save_case(1, 2)
    save_case(2, 2)
    save_case(0, 0)
    save_case(MAX_N, 0)
    save_case(0, MAX_N)
    save_case(MAX_N, 1)
    save_case(1, MAX_N)
    save_case(MAX_N, 2)
    save_case(2, MAX_N)
    save_case(MAX_N, MAX_N)
    for _ in range(10):
        random_case()
    
if __name__=='__main__':
    main()
