151 lines
2.7 KiB
Python
151 lines
2.7 KiB
Python
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(),
|
|
])()
|