Compare commits

..

4 Commits

Author SHA1 Message Date
3ae42f4e67 Feat: done except full reset, maze, dino 2025-12-12 08:15:43 +08:00
fe142bae33 Fix: order in sunflower 2025-11-10 03:58:52 +08:00
47d25d1831 Feat: add LICENSE 2025-11-10 03:14:32 +08:00
fee1eadf05 Feat: add README.md 2025-11-10 03:14:08 +08:00
12 changed files with 277 additions and 78 deletions

14
LICENSE Normal file
View File

@@ -0,0 +1,14 @@
BSD Zero Clause License
Copyright (c) 2025 Yi-Ting Shih
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

10
README.md Normal file
View File

@@ -0,0 +1,10 @@
# The Farmer was Replaced ()_
## Code
- Mix (Grass, Tree, Carrot) => functional but good enough to me
- Sunflower => seems optimal to me
- Maze => functional
- Snake => slow but functional
- Cactus => seems optimal
- Pumpkin => functional but good enough to me

View File

@@ -1,4 +1,5 @@
import utils, solve import utils, solve
import sunflower
def grow(xl, xr, yl, yr): def grow(xl, xr, yl, yr):
def init(): def init():
@@ -98,6 +99,5 @@ if __name__ == '__main__':
clear() clear()
solve.run([ solve.run([
grow.cactus(0, 32, 0, 32), grow(0, 32, 0, 32),
check(),
])() ])()

View File

@@ -7,21 +7,29 @@ base24 = [
] ]
mixs24 = [ mixs24 = [
[mix.grow(0, 4, 8, 16)], [mix.grow( 0, 4, 8, 16)],
[mix.grow(4, 8, 8, 16)], [mix.grow( 4, 8, 8, 16)],
[mix.grow(0, 4, 16, 24)], [mix.grow( 0, 4, 16, 24)],
[mix.grow(4, 8, 16, 24)], [mix.grow( 4, 8, 16, 24)],
[mix.grow( 8, 12, 0, 8)],
[mix.grow(12, 16, 0, 8)],
[mix.grow(16, 20, 8, 16)],
[mix.grow(20, 24, 8, 16)],
[mix.grow( 8, 12, 8, 16)],
[mix.grow(12, 16, 8, 16)],
[mix.grow(16, 20, 0, 8)],
[mix.grow(20, 24, 0, 8)],
[pumpkin.grow(8, 16, 8)], #[pumpkin.grow( 8, 0, 8)],
[pumpkin.grow(16, 8, 8)], #[pumpkin.grow(16, 8, 8)],
[cactus.grow( 8, 16, 8, 16)], #[cactus.grow( 8, 16, 8, 16)],
[cactus.grow(16, 24, 16, 24)], #[cactus.grow(16, 24, 0, 8)],
] ]
mazes24 = [ mazes24 = [
[maze.grow( 8, 0, 8)], [maze.grow( 8, 16, 8)],
[maze.grow(16, 0, 8)], [maze.grow(16, 16, 8)],
] ]
def farm24(): def farm24():

View File

@@ -1,42 +1,51 @@
import solve, grow, utils import solve, utils
import sunflower, mix
base32 = [ base32 = [
grow.sunflower_base(0, 2, 24, 32), sunflower.growbase(0, 8, 0, 2),
grow.sunflower(2, 8, 24, 32), sunflower.grow(0, 8, 2, 8),
] ]
mixs32 = [ mixs32 = [
[grow.three_mix(0, 4, 0, 8)], [mix.grow( 8, 12, 0, 8)],
[grow.three_mix(4, 8, 0, 8)], [mix.grow(12, 16, 0, 8)],
[grow.three_mix(0, 4, 8, 16)], [mix.grow(16, 20, 0, 8)],
[grow.three_mix(4, 8, 8, 16)], [mix.grow(20, 24, 0, 8)],
[grow.three_mix(0, 4, 16, 24)], [mix.grow(24, 28, 0, 8)],
[grow.three_mix(4, 8, 16, 24)], [mix.grow(28, 32, 0, 8)],
[grow.pumpkin( 8, 0, 8)], [mix.grow( 0, 4, 8, 16)],
[grow.pumpkin(16, 8, 8)], [mix.grow( 4, 8, 8, 16)],
[grow.pumpkin( 8, 16, 8)], [mix.grow( 8, 12, 8, 16)],
[grow.pumpkin(16, 24, 8)], [mix.grow(12, 16, 8, 16)],
[mix.grow(16, 20, 8, 16)],
[mix.grow(20, 24, 8, 16)],
[mix.grow(24, 28, 8, 16)],
[mix.grow(28, 32, 8, 16)],
[grow.cactus(16, 24, 0, 8)], [mix.grow( 0, 4, 16, 24)],
[grow.cactus( 8, 16, 8, 16)], [mix.grow( 4, 8, 16, 24)],
[grow.cactus(16, 24, 16, 24)], [mix.grow( 8, 12, 16, 24)],
[grow.cactus( 8, 16, 24, 32)], [mix.grow(12, 16, 16, 24)],
] [mix.grow(16, 20, 16, 24)],
[mix.grow(20, 24, 16, 24)],
[mix.grow(24, 28, 16, 24)],
[mix.grow(28, 32, 16, 24)],
mazes32 = [ [mix.grow( 0, 4, 24, 32)],
[grow.maze(24, 0, 8)], [mix.grow( 4, 8, 24, 32)],
[grow.maze(24, 8, 8)], [mix.grow( 8, 12, 24, 32)],
[grow.maze(24, 16, 8)], [mix.grow(12, 16, 24, 32)],
[grow.maze(24, 24, 8)], [mix.grow(16, 20, 24, 32)],
[mix.grow(20, 24, 24, 32)],
[mix.grow(24, 28, 24, 32)],
[mix.grow(28, 32, 24, 32)],
] ]
def farm32(): def farm32():
set_world_size(32) set_world_size(32)
clear() clear()
for maze in mazes32:
utils.spawn(solve.run(maze, 4000))
for mix in mixs32: for mix in mixs32:
utils.spawn(solve.run(mix)) utils.spawn(solve.run(mix))
solve.run(base32)() solve.run(base32)()

View File

@@ -1 +1,2 @@
leaderboard_run(Leaderboards.Dinosaur, "snake", 10000) # leaderboard_run(Leaderboards.Dinosaur, "snake", 10000)
leaderboard_run(Leaderboards.Sunflowers, "sunflower", 10000)

40
maze.py
View File

@@ -1,5 +1,5 @@
import solve, utils import solve, utils
import sunflower import pumpkin
d = [North, West, South, East] d = [North, West, South, East]
def grow(xl, yl, n, repeat=1): def grow(xl, yl, n, repeat=1):
@@ -45,10 +45,36 @@ def grow(xl, yl, n, repeat=1):
return (init, run) return (init, run)
def grow_full(x, y, replant=False):
substance = 4 * 2**(num_unlocked(Unlocks.Mazes) - 1)
def ret():
utils.mv(x, y)
do_a_flip()
while True:
if get_entity_type() == Entities.Treasure:
harvest()
if replant and get_entity_type() != Entities.Hedge:
plant(Entities.Bush)
use_item(Items.Weird_Substance, substance)
return ret
if __name__ == '__main__': if __name__ == '__main__':
set_world_size(32) set_world_size(8)
utils.spawn(solve.run([ clear()
sunflower.growbase(0, 2, 0, 8),
sunflower.grow(2, 8, 0, 8), jobs = list()
])) for d in range(2):
solve.run([grow(0, 0, 32)])() for x in range(4):
for y in range(4):
if x == 2 and y == 2:
jobs.append(grow_full(d*4+x, y, True))
else:
jobs.append(grow_full(d*4+x, y))
for job in jobs[:-1]:
spawn_drone(job)
jobs[-1]()

36
mix.py
View File

@@ -1,4 +1,8 @@
import utils import utils
import solve
def mv(tx, ty):
utils.mv(tx, ty, True)
def grow(xl, xr, yl, yr): def grow(xl, xr, yl, yr):
def init(): def init():
@@ -35,5 +39,35 @@ def grow(xl, xr, yl, yr):
utils.replant(Entities.Carrot) utils.replant(Entities.Carrot)
return (init, run) return (init, run)
def grow_row(x, yl, yr):
def ret():
for y in range(yl, yr):
mv(x, y)
typ = x%2 + y%2
if typ == 0:
utils.grass()
utils.replant(Entities.Tree)
if typ == 1:
utils.soil()
utils.replant(Entities.Carrot)
if typ == 2:
utils.grass()
while True:
for y in range(yl, yr):
mv(x, y)
typ = x%2 + y%2
if typ == 1:
utils.water()
while not utils.harv():
pass
utils.replant(Entities.Carrot)
return ret
if __name__ == '__main__': if __name__ == '__main__':
pass set_world_size(32)
clear()
for x in range(0, 32-1):
spawn_drone(grow_row(x, 0, 32))
grow_row(32-1, 0, 32)()

View File

@@ -1,38 +1,115 @@
import utils import utils
import solve
def grow(xl, yl, n): def grow(xl, yl, n):
def init(): def init():
for x in range(xl, xl+n): def fillx(x):
l, r, d = yl, yl+n, 1 def ret():
if x%2 == 1: for y in range(yl, yl+n):
l, r, d = yl+n-1, yl-1, -1 utils.mv(x, y)
for y in range(l, r, d): utils.soil()
utils.mv(x, y) return ret
utils.soil()
drowns = list()
for x in range(xl+1, xl+n):
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 run():
check = list() check = list()
for x in range(xl, xl+n): for x in range(xl, xl+n):
l, r, d = yl, yl+n, 1 for y in range(yl, yl+n):
if x%2 == 1:
l, r, d = yl+n-1, yl-1, -1
for y in range(l, r, d):
utils.mv(x, y)
utils.water()
utils.replant(Entities.Pumpkin)
check.append((x, y)) check.append((x, y))
def fillx(x):
def ret():
for y in range(yl, yl+n):
utils.mv(x, y)
utils.water()
utils.replant(Entities.Pumpkin)
return ret
drowns = list()
for x in range(xl+1, xl+n):
drown = None
while drown == None:
drown = spawn_drone(fillx(x))
drowns.append(drown)
fillx(xl)()
for drown in drowns:
wait_for(drown)
while len(check): while len(check):
nxt = list() nxt = list()
for x, y in check: for x, y in check[::-1]:
utils.mv(x, y) utils.mv(x, y)
if not can_harvest(): if not can_harvest():
nxt.append((x, y))
if get_entity_type() == Entities.Dead_Pumpkin: if get_entity_type() == Entities.Dead_Pumpkin:
plant(Entities.Pumpkin) while not can_harvest():
plant(Entities.Pumpkin)
if not use_item(Items.Fertilizer):
nxt.append((x, y))
break
else:
nxt.append((x, y))
check = nxt check = nxt
utils.mv(xl, yl) utils.mv(xl, yl)
utils.harv() utils.harv()
return (init, run) return (init, run)
def grow_parallel(xl, xm, xr, yl, yr):
def ret():
def init(check, xl, xr, yl, yr):
for x in range(xl, xr):
for y in range(yl, yr):
utils.mv(x, y)
utils.soil()
utils.water()
plant(Entities.Pumpkin)
check.append((x, y))
def replant(xl, xr, yl, yr):
def ret():
check = list()
init(check, xl, xr, yl, yr)
while len(check):
nxt = list()
for x, y in check[::-1]:
utils.mv(x, y)
utils.water()
if not can_harvest():
if get_entity_type() == Entities.Dead_Pumpkin:
plant(Entities.Pumpkin)
nxt.append((x, y))
check = nxt
return ret
while True:
drown = spawn_drone(replant(xl, xm, yl, yr))
replant(xm, xr, yl, yr)()
wait_for(drown)
utils.harv()
return ret
if __name__ == '__main__':
set_world_size(32)
clear()
jobs = list()
for x in range(0, 4):
for y in range(0, 4):
jobs.append(grow_parallel(x*8, x*8+4, x*8+7, y*8, y*8+7))
for job in jobs[:-1]:
spawn_drone(job)
jobs[-1]()

View File

@@ -1 +1 @@
{"items":{"serializeList":[{"name":"hay","nr":732862776.0},{"name":"wood","nr":4085470918.0},{"name":"carrot","nr":1111796064.0},{"name":"pumpkin","nr":109301095.0},{"name":"cactus","nr":371811694.0},{"name":"bone","nr":30887608.0},{"name":"weird_substance","nr":428014.0},{"name":"gold","nr":20484298.0},{"name":"water","nr":1232080.0},{"name":"fertilizer","nr":25358.0}]},"dockedFiles":[{"key":"cactus","value":"maze"},{"key":"farm24","value":"farm32"},{"key":"hats","value":"utils"},{"key":"leaderboard","value":"farm24"},{"key":"maze","value":"snake"},{"key":"pumpkin","value":"mix"},{"key":"sunflower","value":"pumpkin"},{"key":"utils","value":"solve"}],"minimizedFiles":["farm24","farm32","leaderboard"],"openFilePositions":[{"key":"cactus","value":{"x":825.1744995117188,"y":158.076904296875}},{"key":"farm24","value":{"x":825.1744995117188,"y":158.076904296875}},{"key":"farm32","value":{"x":-634.2324829101563,"y":2230.040283203125}},{"key":"hats","value":{"x":825.1744995117188,"y":158.076904296875}},{"key":"leaderboard","value":{"x":825.1744995117188,"y":158.076904296875}},{"key":"maze","value":{"x":825.1744995117188,"y":158.076904296875}},{"key":"mix","value":{"x":-1656.432861328125,"y":1936.912841796875}},{"key":"pumpkin","value":{"x":825.1744995117188,"y":158.076904296875}},{"key":"snake","value":{"x":-693.8130493164063,"y":1927.7490234375}},{"key":"solve","value":{"x":-2349.65087890625,"y":2051.2119140625}},{"key":"sunflower","value":{"x":825.1744995117188,"y":158.076904296875}},{"key":"utils","value":{"x":825.1744995117188,"y":158.076904296875}}],"openFileScrollPositions":[{"key":"cactus","value":1007.769775390625},{"key":"farm24","value":450.0},{"key":"farm32","value":149.98077392578126},{"key":"hats","value":0.0},{"key":"leaderboard","value":0.0},{"key":"maze","value":299.99945068359377},{"key":"mix","value":0.0},{"key":"pumpkin","value":-0.0008544921875},{"key":"snake","value":2418.223388671875},{"key":"solve","value":0.00030517578125},{"key":"sunflower","value":0.0},{"key":"utils","value":599.9998779296875}],"openFileSizes":[{"key":"cactus","value":{"x":0.0,"y":0.0}},{"key":"farm24","value":{"x":0.0,"y":0.0}},{"key":"farm32","value":{"x":0.0,"y":0.0}},{"key":"hats","value":{"x":0.0,"y":0.0}},{"key":"leaderboard","value":{"x":0.0,"y":0.0}},{"key":"maze","value":{"x":0.0,"y":0.0}},{"key":"mix","value":{"x":0.0,"y":0.0}},{"key":"pumpkin","value":{"x":0.0,"y":0.0}},{"key":"snake","value":{"x":0.0,"y":0.0}},{"key":"solve","value":{"x":0.0,"y":0.0}},{"key":"sunflower","value":{"x":0.0,"y":0.0}},{"key":"utils","value":{"x":0.0,"y":0.0}}],"openDocPages":[],"unlocks":["grass_10","soil","harvest","pass","do_a_flip","pet_the_piggy","grassland","hay","straw_hat","while","true","false","break","continue","loops","speed_5","can_harvest","if","else","elif","expand_9","move","north","south","east","west","for","range","get_world_size","wood","bush","entities","clear","plant","change_hat","gray_hat","purple_hat","green_hat","brown_hat","hats","traffic_cone","and","or","not","operators","carrots_10","carrot","till","can_trade","trade","items","carrot_seed","get_entity_type","get_ground_type","grounds","get_pos_x","get_pos_y","none","num_items","num_unlocked","senses","watering_9","water","use_item","get_water","trees_10","tree","tree_hat","sunflower_seed","sunflower","power","get_active_power","measure","sunflowers","pumpkins_10","pumpkin","pumpkin_seed","dead_pumpkin","carrot_hat","variables","functions","def","return","global","from","import","fertilizer_4","weird_substance","append","remove","pop","insert","len","list","lists","traffic_cone_stack","print","quick_print","unlocks","str","debug","pumpkin_hat","sunflower_hat","swap","cactus_seed","cactus_6","get_companion","polyculture_5","hedge","treasure","gold","can_move","mazes_6","dicts","sets","add","dict","set","dictionaries","get_cost","costs","min","max","abs","random","utilities","get_time","get_tick_count","timing","unlock","auto_unlock","wizard_hat","cactus_hat","gold_hat","megafarm_5","get_drone_id","num_drones","max_drones","wait_for","spawn_drone","has_finished","dinosaurs_6","dinosaur","egg","bone","dinosaur_hat","apple","set_execution_speed","set_world_size","debug_2","simulate","simulation","leaderboard_run","leaderboards","leaderboard","golden_cactus_hat","the_farmers_remains"],"version":3} {"items":{"serializeList":[{"name":"hay","nr":2126151992.0},{"name":"wood","nr":13442136262.0},{"name":"carrot","nr":2433310170.0},{"name":"pumpkin","nr":386010855.0},{"name":"cactus","nr":45521902.0},{"name":"bone","nr":30887608.0},{"name":"weird_substance","nr":7421646.0},{"name":"gold","nr":14014922.0},{"name":"water","nr":1571836.0},{"name":"fertilizer","nr":28066.0},{"name":"power","nr":597564.7140000112}]},"dockedFiles":[{"key":"cactus","value":"maze"},{"key":"farm24","value":"farm32"},{"key":"hats","value":"utils"},{"key":"leaderboard","value":"farm24"},{"key":"maze","value":"snake"},{"key":"pumpkin","value":"mix"},{"key":"sunflower","value":"pumpkin"},{"key":"utils","value":"solve"}],"minimizedFiles":["farm32","leaderboard"],"openFilePositions":[{"key":"cactus","value":{"x":825.173583984375,"y":-109.423828125}},{"key":"farm24","value":{"x":825.173583984375,"y":-109.423828125}},{"key":"farm32","value":{"x":-681.9122314453125,"y":2821.310302734375}},{"key":"hats","value":{"x":825.173583984375,"y":-109.423828125}},{"key":"leaderboard","value":{"x":825.173583984375,"y":-109.423828125}},{"key":"maze","value":{"x":825.173583984375,"y":-109.423828125}},{"key":"mix","value":{"x":-1656.432861328125,"y":1936.9075927734375}},{"key":"pumpkin","value":{"x":825.173583984375,"y":-109.423828125}},{"key":"snake","value":{"x":-693.814208984375,"y":1927.741943359375}},{"key":"solve","value":{"x":-2349.65283203125,"y":2051.204833984375}},{"key":"sunflower","value":{"x":825.173583984375,"y":-109.423828125}},{"key":"utils","value":{"x":825.173583984375,"y":-109.423828125}},{"key":"docs0","value":{"x":1122.8577880859375,"y":1939.3671875}}],"openFileScrollPositions":[{"key":"cactus","value":48.94798278808594},{"key":"farm24","value":757.3106689453125},{"key":"farm32","value":0.0},{"key":"hats","value":0.0},{"key":"leaderboard","value":-100.0},{"key":"maze","value":1620.765625},{"key":"mix","value":205.3017578125},{"key":"pumpkin","value":0.0},{"key":"snake","value":2418.223388671875},{"key":"solve","value":-0.0001220703125},{"key":"sunflower","value":400.8338928222656},{"key":"utils","value":2209.4697265625}],"openFileSizes":[{"key":"cactus","value":{"x":0.0,"y":0.0}},{"key":"farm24","value":{"x":0.0,"y":0.0}},{"key":"farm32","value":{"x":0.0,"y":0.0}},{"key":"hats","value":{"x":0.0,"y":0.0}},{"key":"leaderboard","value":{"x":0.0,"y":0.0}},{"key":"maze","value":{"x":0.0,"y":0.0}},{"key":"mix","value":{"x":0.0,"y":0.0}},{"key":"pumpkin","value":{"x":0.0,"y":0.0}},{"key":"snake","value":{"x":0.0,"y":0.0}},{"key":"solve","value":{"x":0.0,"y":0.0}},{"key":"sunflower","value":{"x":0.0,"y":0.0}},{"key":"utils","value":{"x":0.0,"y":0.0}},{"key":"docs0","value":{"x":900.0,"y":700.0}}],"openDocPages":[{"key":"docs0","value":"docs/home.md"}],"unlocks":["grass_10","soil","harvest","pass","do_a_flip","pet_the_piggy","grassland","hay","straw_hat","while","true","false","break","continue","loops","speed_5","can_harvest","if","else","elif","expand_9","move","north","south","east","west","for","range","get_world_size","wood","bush","entities","clear","plant","change_hat","gray_hat","purple_hat","green_hat","brown_hat","hats","traffic_cone","and","or","not","operators","carrots_10","carrot","till","can_trade","trade","items","carrot_seed","get_entity_type","get_ground_type","grounds","get_pos_x","get_pos_y","none","num_items","num_unlocked","senses","watering_9","water","use_item","get_water","trees_10","tree","tree_hat","sunflower_seed","sunflower","power","get_active_power","measure","sunflowers","pumpkins_10","pumpkin","pumpkin_seed","dead_pumpkin","carrot_hat","variables","functions","def","return","global","from","import","fertilizer_4","weird_substance","append","remove","pop","insert","len","list","lists","traffic_cone_stack","print","quick_print","unlocks","str","debug","pumpkin_hat","sunflower_hat","swap","cactus_seed","cactus_6","get_companion","polyculture_5","hedge","treasure","gold","can_move","mazes_6","dicts","sets","add","dict","set","dictionaries","get_cost","costs","min","max","abs","random","utilities","get_time","get_tick_count","timing","unlock","auto_unlock","wizard_hat","cactus_hat","gold_hat","megafarm_5","get_drone_id","num_drones","max_drones","wait_for","spawn_drone","has_finished","dinosaurs_6","dinosaur","egg","bone","dinosaur_hat","apple","set_execution_speed","set_world_size","debug_2","simulate","simulation","leaderboard_run","leaderboards","leaderboard","golden_cactus_hat","the_farmers_remains","top_hat","golden_sunflower_hat","golden_tree_hat","golden_carrot_hat","golden_pumpkin_hat"],"version":3}

View File

@@ -63,10 +63,9 @@ def grow(xl, xr, yl, yr):
l, r, d = yr-1, yl-1, -1 l, r, d = yr-1, yl-1, -1
for y in range(l, r, d): for y in range(l, r, d):
utils.mv(x, y) utils.mv(x, y)
cur = measure()-7 pos[measure()-7].append((x, y))
pos[cur].append((x, y))
for p in pos: for p in pos[::-1]:
for x, y in p: for x, y in p:
utils.mv(x, y) utils.mv(x, y)
while not utils.harv(): while not utils.harv():
@@ -89,19 +88,23 @@ def growparallel(xl, xr, yl, yr):
return ret return ret
drowns = list() drowns = list()
for x in range(xl+1, xr): for x in range(xl, xr-1):
utils.mv(x, get_pos_y())
drown = None drown = None
while drown == None: while drown == None:
drown = spawn_drone(fillx(x)) drown = spawn_drone(fillx(x))
drowns.append(drown) drowns.append(drown)
fillx(xl)() fillx(xr-1)()
for drown in drowns: for drown in drowns:
wait_for(drown) wait_for(drown)
def run(): def run():
def harvx(k, x): def harvx(k, x, inv):
def ret(): def ret():
for y in range(yl, yr): 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) utils.mv(x, y)
if measure() == k: if measure() == k:
while not utils.harv(): while not utils.harv():
@@ -110,12 +113,16 @@ def growparallel(xl, xr, yl, yr):
for k in range(15, 6, -1): for k in range(15, 6, -1):
drowns = list() drowns = list()
for x in range(xl+1, xr): 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 drown = None
while drown == None: while drown == None:
drown = spawn_drone(harvx(k, x)) drown = spawn_drone(harvx(k, x, k%2 == 1))
drowns.append(drown) drowns.append(drown)
harvx(k, xl)() harvx(k, r-d, k%2 == 1)()
for drown in drowns: for drown in drowns:
wait_for(drown) wait_for(drown)
@@ -123,11 +130,21 @@ def growparallel(xl, xr, yl, yr):
return (init, run) return (init, run)
def check():
def init():
pass
def run():
if num_items(Items.Power) >= 100000:
return True
return (init, run)
if __name__ == '__main__': if __name__ == '__main__':
set_world_size(8) set_world_size(32)
clear() clear()
solve.run([ solve.run([
growbase(0, 8, 0, 2), growparallel(0, 32, 0, 32)
grow(0, 8, 2, 8), # check(),
])() ])()

View File

@@ -82,7 +82,10 @@ def replant(entity):
def spawn(func, x=0, y=0): def spawn(func, x=0, y=0):
mv(x, y) mv(x, y)
spawn_drone(func) drone = None
while drone == None:
drone = spawn_drone(func)
return drone
def meas(arg=None): def meas(arg=None):
ret = None ret = None