import numpy as np SIZE_TINY = 5 SIZE_SMALL = 10 SIZE_LARGE = 30 SIZE_XLARGE = 50 locations = [ "attic", "back_yard", "basement", "bathroom", "bedroom", "cellar", "closet", "crawlspace", "den", "dining_room", "front_yard", "garage", "garden", "hall", "hallway", "kitchen", "laundry", "living_room", "lounge", "master_bedroom", "office", "pantry", "patio", "playroom", "porch", "staircase", "study", "sunroom", "TV_room", "workshop", ] clothing = [ "belt", "boots", "cap", "coat", "dress", "gloves", "hat", "jacket", "jeans", "pajamas", "pants", "raincoat", "scarf", "shirt", "shoes", "skirt", "slacks", "slippers", "socks", "stockings", "suit", "sweater", "sweatshirt", "t-shirt", "tie", "trousers", "underclothes", "underpants", "undershirt", ] fruit = [ "apple", "banana", "cherry", "grapefruit", "grapes", "lemon", "lime", "melon", "orange", "peach", "pear", "persimmon", "pineapple", "plum", "strawberry", "tangerine", "watermelon", ] vegetables = [ "asparagus", "beans", "broccoli", "cabbage", "carrot", "celery", "corn", "cucumber", "eggplant", "green_pepper", "lettuce", "onion", "peas", "potato", "pumpkin", "radish", "spinach", "sweet_potato", "tomato", "turnip", ] objects = fruit + vegetables containers = [ "box", "pantry", "bathtub", "envelope", "drawer", "bottle", "cupboard", "basket", "crate", "suitcase", "bucket", "container", "treasure_chest", ] colors = ['green', 'blue', 'red'] containers = ['_'.join([color, container]) for container in containers for color in colors] names = [ "Oliver", "Ethan", "Liam", "Benjamin", "Lucas", "Alexander", "Jacob", "Mason", "William", "Gracie", "James", "Logan", "Owen", "Noah", "Carter", "Nathan", "Jack", "Aiden", "Jackson", "Jayden", "Emma", "Olivia", "Emily", "Sophia", "Ava", "Chloe", "Charlotte", "Abigail", "Amelia", "Ella", "Hannah", "Isabella", "Aria", "Lily", "Mia", "Isla", "Avery", "Elizabeth", "Mila", "Evelyn", ] assert len(locations) >= SIZE_LARGE assert len(objects) >= SIZE_LARGE assert len(containers) >= SIZE_LARGE assert len(names) >= SIZE_LARGE def write_world(filepath, locs, objs, conts, nams): with open(filepath, 'w') as f: f.write('# locations\n') for loc in locs: f.write('\n') f.write('create %s\n' % loc) f.write('set %s is_thing\n' % loc) f.write('set %s is_location\n' % loc) f.write('\n') f.write('# objects\n') for obj in objs: f.write('\n') f.write('create %s\n' % obj) f.write('set %s is_thing\n' % obj) f.write('set %s is_gettable\n' % obj) f.write('\n') f.write('# containers\n') for cont in conts: f.write('\n') f.write('create %s\n' % cont) f.write('set %s is_thing\n' % cont) f.write('set %s is_container\n' % cont) f.write('\n') f.write('# actors\n') for nam in nams: f.write('\n') f.write('create %s\n' % nam) f.write('set %s is_actor\n' % nam) f.write('set %s is_god\n' % nam) write_world('world_tiny.txt', np.random.choice(locations, SIZE_TINY, replace=False), np.random.choice(objects, SIZE_TINY, replace=False), np.random.choice(containers, SIZE_TINY, replace=False), np.random.choice(names, SIZE_TINY, replace=False)) write_world('world_small.txt', np.random.choice(locations, SIZE_SMALL, replace=False), np.random.choice(objects, SIZE_SMALL, replace=False), np.random.choice(containers, SIZE_SMALL, replace=False), np.random.choice(names, SIZE_SMALL, replace=False)) write_world('world_large.txt', np.random.choice(locations, SIZE_LARGE, replace=False), np.random.choice(objects, SIZE_LARGE, replace=False), np.random.choice(containers, SIZE_LARGE, replace=False), np.random.choice(names, SIZE_LARGE, replace=False))