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+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(): def harvx(k, x): def ret(): for y in range(yl, yr): utils.mv(x, y) if measure() == k: while not utils.harv(): pass return ret for k in range(15, 6, -1): drowns = list() for x in range(xl+1, xr): drown = None while drown == None: drown = spawn_drone(harvx(k, x)) drowns.append(drown) harvx(k, xl)() for drown in drowns: wait_for(drown) init() return (init, run) if __name__ == '__main__': set_world_size(8) clear() solve.run([ growbase(0, 8, 0, 2), grow(0, 8, 2, 8), ])()