Chore: checkpoint
This commit is contained in:
133
sunflower.py
Normal file
133
sunflower.py
Normal file
@@ -0,0 +1,133 @@
|
||||
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)
|
||||
cur = measure()-7
|
||||
pos[cur].append((x, y))
|
||||
|
||||
for p in pos:
|
||||
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),
|
||||
])()
|
||||
Reference in New Issue
Block a user