python - Tilemap 数组:查找唯一的连续元素
问题描述
想象一下,您正在为当地政府工作,担任土地测量员。您的工作是找出该市当前工业用地上还有多少空间可用于新建筑。为此,您需要测量今天有多少建筑物。工业用地由二维数组表示,其中“B”表示建筑物(部分),“E”表示空白空间。如果 B 与其他 B 水平或垂直连接,则这些 B 是一栋建筑物的一部分。如果两个 B 只对角连接,则将它们视为独立的建筑物。编写一个函数:find_building(input_map),它返回工业场地上的建筑物数量。如果数组中的任何元素不是“B”或“E”,则该函数应返回 -1。笔记:编辑器中的初始代码使用制表符进行缩进。不要将其与空格混合。示例:以下示例中有三座建筑物:
[
["B", "B", "B"],
["B", "E", "B"],
["E", "E", "E"],
["E", "E", "B"],
["B", "E", "B"]
]
def func(test):
print(test)
count = 1
for i in range(len(test)):
for j, data in enumerate(test[i]):
if data == "B" or data == "N":
if data == "B":
arr[i][j] = count;
count = count + 1
if (j + 1) < len(arr[i]):
if arr[i][j+1] == "B" :
arr[i][j+1] = "N"
if (i+1) < len(test):
if arr[i+1][j] == "B":
arr[i+1][j] = "N"
return test
解决方案
不漂亮,但它正在工作: https ://trinket.io/python3/c26252b88a
arr = [
["B", "B", "B"],
["B", "E", "B"],
["E", "E", "E"],
["E", "E", "B"],
["B", "E", "B"]
]
def check_contiguous( idxRow, idxCol):
arr[idxRow][idxCol] = 'X'
# bottom left cell
if idxRow == len(arr)-1 and idxCol == len(arr[0])-1:
return 0
# bottom row
elif idxRow == len(arr)-1:
if arr[idxRow][idxCol+1] != 'B':
return 0
else:
if arr[idxRow][idxCol+1] == 'B':
check_contiguous(idxRow, idxCol+1)
# right column
if idxCol == len(arr[0])-1:
if arr[idxRow+1][idxCol] != 'B':
return 0
else:
if arr[idxRow+1][idxCol] == 'B':
check_contiguous(idxRow+1, idxCol)
else:
if arr[idxRow+1][idxCol+1] != 'B' and \
arr[idxRow][idxCol+1] != 'B':
return 0
else:
if arr[idxRow+1][idxCol] == 'B':
check_contiguous(idxRow+1, idxCol)
if arr[idxRow][idxCol+1] == 'B':
check_contiguous(idxRow, idxCol+1)
def func():
total_nb = 0
for idx_row, row in enumerate(arr):
for idx_col, el in enumerate(row):
if el == 'B':
total_nb += 1
check_contiguous(idx_row, idx_col)
return total_nb
print(func())
推荐阅读
- grep - 在 XML 中搜索所有子目录的值并返回子目录名称和值
- oracle - oracle 子查询插入给出 ora937 和 ora 979
- java - 使用Java jsoup解析html页面并存储数据
- javascript - 如何使一个元素跨越 React Table 中的整个单元格
- swift - 类型“SwinjectStoryboardOption”不符合协议“ServiceKeyOption”
- html - 在 Google Apps 脚本中提交 HTML 表单时如何发送地理定位和输入
- html - 我的 iOS 应用程序中带有 WebView 的 HTML 视图为空
- json - 具有多个 HTML 选择过滤器和数组值的 Google Maps JS API
- python - 为什么我的大型 HDF5 数据集花式索引需要这么长时间?
- mysql - 具有布尔值的 MySQL JSON_SEARCH 不起作用