Chore: checkpoint
This commit is contained in:
103
cactus.py
Normal file
103
cactus.py
Normal file
@@ -0,0 +1,103 @@
|
||||
import utils, solve
|
||||
|
||||
def grow(xl, xr, yl, yr):
|
||||
def init():
|
||||
def fillx(x):
|
||||
def ret():
|
||||
for y in range(yl, yr):
|
||||
utils.mv(x, y)
|
||||
utils.soil()
|
||||
utils.water()
|
||||
utils.replant(Entities.Cactus)
|
||||
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 sortx(x):
|
||||
def ret():
|
||||
l, r = yl, yr-1
|
||||
while l < r:
|
||||
for i in range(l, r):
|
||||
utils.mv(x, i)
|
||||
cur, nxt = utils.meas(), utils.meas(North)
|
||||
if nxt < cur:
|
||||
swap(North)
|
||||
r -= 1
|
||||
for i in range(r, l, -1):
|
||||
utils.mv(x, i)
|
||||
cur, nxt = utils.meas(), utils.meas(South)
|
||||
if nxt > cur:
|
||||
swap(South)
|
||||
l += 1
|
||||
return ret
|
||||
|
||||
drowns = list()
|
||||
for x in range(xl+1, xr):
|
||||
drown = None
|
||||
while drown == None:
|
||||
drown = spawn_drone(sortx(x))
|
||||
drowns.append(drown)
|
||||
sortx(xl)()
|
||||
for drown in drowns:
|
||||
wait_for(drown)
|
||||
|
||||
def sorty(y):
|
||||
def ret():
|
||||
l, r = xl, xr-1
|
||||
while l < r:
|
||||
for i in range(l, r):
|
||||
utils.mv(i, y)
|
||||
cur, nxt = utils.meas(), utils.meas(East)
|
||||
if nxt < cur:
|
||||
swap(East)
|
||||
r -= 1
|
||||
for i in range(r, l, -1):
|
||||
utils.mv(i, y)
|
||||
cur, nxt = utils.meas(), utils.meas(West)
|
||||
if nxt > cur:
|
||||
swap(West)
|
||||
l += 1
|
||||
return ret
|
||||
|
||||
drowns = list()
|
||||
for y in range(yl+1, yr):
|
||||
drown = None
|
||||
while drown == None:
|
||||
drown = spawn_drone(sorty(y))
|
||||
drowns.append(drown)
|
||||
sorty(yl)()
|
||||
for drown in drowns:
|
||||
wait_for(drown)
|
||||
|
||||
utils.harv()
|
||||
|
||||
init()
|
||||
|
||||
return (init, run)
|
||||
|
||||
def check():
|
||||
def init():
|
||||
pass
|
||||
|
||||
def run():
|
||||
if num_items(Items.Cactus) >= 33554432:
|
||||
return True
|
||||
return (init, run)
|
||||
|
||||
if __name__ == '__main__':
|
||||
set_world_size(32)
|
||||
clear()
|
||||
|
||||
solve.run([
|
||||
grow.cactus(0, 32, 0, 32),
|
||||
check(),
|
||||
])()
|
||||
Reference in New Issue
Block a user