import utils, solve def growbase(xl, xr, yl, yr): def init(): utils.mv(xl, yl) def fillx(x): def ret(): for y in range(yl, yr): utils.mv(x, y) utils.soil() utils.replant(Entities.Sunflower) while utils.meas() != 7: harvest() plant(Entities.Sunflower) return ret drowns = list() for x in range(xl+1, xr): drown = None while drown == None: drown = spawn_drone(fillx(x)) drowns.append(drown) fillx(xl)() for drown in drowns: wait_for(drown) def run(): pass return (init, run) def grow(xl, xr, yl, yr): def init(): utils.mv(xl, yl) def fillx(x): def ret(): for y in range(yl, yr): utils.mv(x, y) utils.water() utils.soil() utils.replant(Entities.Sunflower) return ret drowns = list() for x in range(xl+1, xr): drown = None while drown == None: drown = spawn_drone(fillx(x)) drowns.append(drown) fillx(xl)() for drown in drowns: wait_for(drown) def run(): pos = list() for i in range(7, 15+1): pos.append(list()) for x in range(xl, xr): l, r, d = yl, yr, 1 if x%2 == 1: l, r, d = yr-1, yl-1, -1 for y in range(l, r, d): utils.mv(x, y) pos[measure()-7].append((x, y)) for p in pos[::-1]: for x, y in p: utils.mv(x, y) while not utils.harv(): pass init() return (init, run) def growparallel(xl, xr, yl, yr): def init(): utils.mv(xl, yl) def fillx(x): def ret(): for y in range(yl, yr): utils.mv(x, y) utils.water() utils.soil() utils.replant(Entities.Sunflower) return ret drowns = list() for x in range(xl, xr-1): utils.mv(x, get_pos_y()) drown = None while drown == None: drown = spawn_drone(fillx(x)) drowns.append(drown) fillx(xr-1)() for drown in drowns: wait_for(drown) def run(): def harvx(k, x, inv): def ret(): l, r, d = yl, yr, 1 if inv == True: l, r, d = yr-1, yl-1, -1 for y in range(l, r, d): utils.mv(x, y) if measure() == k: while not utils.harv(): pass return ret for k in range(15, 6, -1): drowns = list() l, r, d = xl, xr, 1 if k%2 == 1: l, r, d = xr-1, xl-1, -1 for x in range(l, r-d, d): utils.mv(x, get_pos_y()) drown = None while drown == None: drown = spawn_drone(harvx(k, x, k%2 == 1)) drowns.append(drown) harvx(k, r-d, k%2 == 1)() for drown in drowns: wait_for(drown) init() return (init, run) def check(): def init(): pass def run(): if num_items(Items.Power) >= 100000: return True return (init, run) if __name__ == '__main__': set_world_size(32) clear() solve.run([ growparallel(0, 32, 0, 32) # check(), ])()