【发布时间】:2020-03-29 16:53:18
【问题描述】:
我正在尝试制作一个小游戏,但我无法让它按照我需要的方式运行。我需要找到一种方法(我在递归地猜测?)来改变一个 2D 列表,以便所有相邻的字符都被替换为不同的字符。例如,如果我有一个这样的 2D 列表:
[['#', '#', '#', '@', '@', '#', '#', '#', '%'], ['#', '#' , '@', '@', '&', '&', '&', '#', '%'], ['@', '#', '#', '#', '#', '#', '&', '#', '%'], ['@', '@', '@', '@', '#', '#', '#', '%', '%'], ['#', '@ ', '%', '%', '%', '%', '%', '%', '%']]
它应该像这样打印在一个网格中:
012345678
0 $$$@@$$$%
1 $$@@&&&$%
2 @$$$$$&$%
3 @@@@$$$%%
4 $@%%%%%%%
例如,如果用户在第 3 行第 1 列输入“%”,则每个相互连接的“@”都应更改为所需的符号,使其变为:
012345678
0 $$$@@$$$%
1 $$@@&&&$%
2 %$$$$$&$%
3 %%%%$$$%%
4 $%%%%%%%%
我们的目标是让所有东西都成为同一个符号。我填充这些空间的功能目前如下所示,并且仅在所需位置替换符号,并且没有与之相邻的任何内容:
def fill(gameBoard, targetSymbol, userSymbol, row, col):
if gameBoard[row][col] != targetSymbol:
pass
elif gameBoard[row][col] == targetSymbol:
gameBoard[row][col] = userSymbol
我知道目前这有点简单,但我尝试过的大部分方法最终都不起作用。让它也改变相邻点的最佳方法是什么?我假设递归是最好的,但我还没有真正用递归做太多事情,我正在努力弄清楚让它工作背后的逻辑。
【问题讨论】:
-
为什么你不编辑你的问题,让它看起来像一个问题?例如,以我如何...开头,以问号结尾?
-
快速提醒,直接从 stackoverflow 提出的家庭作业问题的解决方案是零分(或更差)。
标签: python list recursion multidimensional-array