Chore: checkpoint

This commit is contained in:
2025-11-10 03:07:40 +08:00
commit f13ce0450b
14 changed files with 2014 additions and 0 deletions

103
cactus.py Normal file
View 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(),
])()