[编程农场][The Farmer Was Replaced]——Catus

75 阅读1分钟

写在前面

建议大家 无人机数量 ≥ 农场边长。注意以下两个科技树,使其匹配:

农场边长:

描述

无人机数量:

描述

Catus

横竖各冒泡排序一次,如果要优化可以记录是否还有逆序对,若该行列没有,则释放无人机,放在其他行列做swap动作。

#set_world_size(8)
#set_execution_speed(1)
n=get_world_size()
clear()
def move_to(x,y):
    x0=get_pos_x()
    y0=get_pos_y()
    for i in range(abs(x-x0)):
        if x-x0 >0:
            move(East)
        else:
            move(West)            
    for i in range(abs(y-y0)):
        if y-y0 >0:
            move(North)
        else:
            move(South)
def make_drone_v():
    for i in range(n):
        if get_ground_type() == Grounds.Grassland:
            till()
        plant(Entities.Cactus)
        move(North)
    for i in range(n-1):
        for j in range(n-i-1):
            if measure() > measure(North):
                swap(North)
            if i%2 == 0:
                move(North)
            else:
                move(South)
        if i%2 == 1:
            move(North)
            move(North)
        else:
            move(South)
            move(South)
def make_drone_h():
    for i in range(n-1):
        for j in range(n-i-1):
            if measure() > measure(East):
                swap(East)
            if i%2 == 0:
                move(East)
            else:
                move(West)
        if i%2 == 1:
            move(East)
            move(East)
        else:
            move(West)
            move(West)
while True:
    move_to(0,0)
    for i in range(n-1):    
        spawn_drone(make_drone_v)
        move(East)
    make_drone_v()
    move(East)
    while  num_drones() > 1:
        pass

    move_to(0,0)
    for i in range(n-1):    
        spawn_drone(make_drone_h)
        move(North)
    make_drone_h()
    move(North)
    while  num_drones() > 1:
        pass
    harvest()