-1

我刚开始学习计算机科学,却陷入了编程 langton's ant 的困境。我的蚂蚁需要大致像这样移动一步

白面蚂蚁:东>>>行+1,南>>>列-1,西>>>行-1,北>>>列+1

黑面蚂蚁:东 >>> 第 1 行,南 >>> 列 +1,西 >>> 行+1,北 >>> 第 1 列

def ant_coordinates(ant_row, ant_col, orientation):
    color = orig_grid[ant_row][ant_col]
    if color == 'white':
        orientation == 'East'
        ant_row += 1
        orientation == 'South'
        ant_col -= 1
    return ant_row, ant_col, orientation

当我把南作为方向时,我的东西在行部分加了一个

4

1 回答 1

0

您正在测试平等,但没有对它做任何事情,与那些==. 你需要的是这样的:

def ant_coordinates(ant_row, ant_col, orientation):
    color = orig_grid[ant_row][ant_col]
    if color == 'white':
        if orientation == 'East':
            ant_row += 1
        elif orientation == 'South':
            ant_col -= 1
    return ant_row, ant_col, orientation

我不确定这个函数的实际行为应该是什么,但它会做的是:

如果颜色不是白色,则只返回所有参数不变。

如果颜色为白色且方向为东,则返回行 += 1 的所有参数。

如果颜色为白色且方向为南,则返回 col -= 1 的所有参数。

如果颜色为白色且方向为其他,则返回所有参数不变。您显然可以扩展此功能以添加其他方向的功能。

您的代码现在所做的是:

def ant_coordinates(ant_row, ant_col, orientation):
    color = orig_grid[ant_row][ant_col]
    if color == 'white': # goes in here if color is white
        orientation == 'East' # returns True or False, value not used anywhere
        ant_row += 1 # always increments row if color is white
        orientation == 'South' # returns True or False, value not used anywhere
        ant_col -= 1 # always decrements col if color is white
    return ant_row, ant_col, orientation

希望这可以帮助!==只是一个比较,并不意味着if.

于 2013-09-05T18:55:06.517 回答