仙人掌
约 636 字大约 2 分钟
2026-09-23

作物机制
- 实体:
Entities.Cactus - 产物:
Items.Cactus - 需要种在土壤上
- 仙人掌有
0 ~ 9共 10 种尺寸,可以使用measure()获取 - 可以用
measure(direction)查看相邻仙人掌,用swap(direction)交换相邻位置 - 北侧和东侧需要大于等于当前尺寸,南侧和西侧需要小于等于当前尺寸
当整片成熟仙人掌满足排序条件时,收获其中一棵会递归收获相邻仙人掌
一次连锁收获 n 棵仙人掌会得到 n ** 2 个仙人掌,因此核心不是单棵收获,而是先把整片农场排好序
种植方案
从仙人掌作物的机制中可以了解到,仙人掌种植方案本质上就是排序
而且由于 swap(direction)方法只能交换相邻位置,能选择的排序算法就只有冒泡排序
- 基本的按行进行冒泡排序方式,从左边(西边)第一个开始,依次将尺寸最大的仙人掌右移(东移)
# Sort by row with width
def sort_by_row():
width = size[0]
pos = (get_pos_x(), get_pos_y())
for i in range(width - 1):
move_to(pos[0], pos[1])
for j in range(width - 1 - i):
if measure() > measure(East):
swap(East)
move(East)- 将所有的行排序完毕后,再进行列排序,方法相同,从下边(南边)第一个开始,依次将尺寸最大的仙人掌上移(北移)
# Sort by column with height
def sort_by_col():
height = size[1]
pos = (get_pos_x(), get_pos_y())
for i in range(height - 1):
move_to(pos[0], pos[1])
for j in range(height - 1 - i):
if measure() > measure(North):
swap(North)
move(North)- 使用多架无人机同时排序可以显著提高速度
# Sort rows until all are sorted
def sort_cols():
move_to(pos[0], pos[1])
sorted_already = True
width = size[0]
res = []
for i in range(width):
if i != width - 1:
res.append(spawn_drone(sort_by_col))
move(East)
else:
sorted_already = sorted_already and sort_by_col()
for handle in res:
sorted_already = wait_for(handle) and sorted_already
return sorted_already优化方向
- 冒泡排序可以剪枝,当部分排序已经完成时可以提前结束
相关成就与排行榜
| 图标 | 成就 | 条件 |
|---|---|---|
| 你搞错了 | 将整片仙人掌按错误方向排列 | |
| 仙人掌大亨 | 累计收获 1 亿仙人掌 | |
| 仙人掌大师 | 1 分钟内收获 2000 万仙人掌 |
排行榜
Leaderboards.CactusLeaderboards.Cactus_Single
