鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 破渔网兜兜

[技术交流] Python习题集(1)Moore Neighbourhood

[复制链接]
发表于 2015-1-20 11:51:26 | 显示全部楼层
有意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-20 14:07:25 | 显示全部楼层
谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-20 15:14:41 | 显示全部楼层
大神们~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-21 09:56:20 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-23 23:42:26 | 显示全部楼层
即使纯粹把所有的情况列出来也只占20多行啊。
def count_neighbours(grid, row, col):
    if (row < 0 or row >= len(grid)) and (col < 0 or col >= len(grid[0])):
        return 0
    elif (row > 0 and row < len(grid)-1) and (col > 0 and col < len(grid[0])-1) :#in the middle
        return grid[row-1][col-1] + grid[row-1][col] + grid[row-1][col+1] + grid[row][col-1] + grid[row][col+1] + grid[row+1][col-1] + grid[row+1][col] + grid[row+1][col+1]
    elif row == 0 and col == 0:# in four corners
        return grid[row][col+1] + grid[row+1][col+1] + grid[row+1][col]
    elif row == 0 and col == len(grid[0])-1 :
        return grid[row][col-1] + grid[row+1][col-1] + grid[row+1][col]
    elif row == len(grid)-1 and col == 0 :
        return grid[row-1][col] + grid[row-1][col+1] + grid[row][col+1]
    elif row == len(grid)-1 and col == len(grid[0])-1:
        return grid[row-1][col] + grid[row][col-1] + grid[row-1][col-1]
    elif row == 0 and (col > 0 and col < len(grid[0])-1): #on four sides
        return grid[row][col-1] + grid[row][col+1] + grid[row+1][col-1] + grid[row+1][col] + grid[row+1][col+1]
    elif row == len(grid) -1 and (col > 0 and col < len(grid[0])-1):
        return grid[row][col-1] + grid[row][col+1] + grid[row-1][col-1] + grid[row-1][col] + grid[row-1][col+1]
    elif (row > 0 or row < len(grid)-1) and col == 0:
        return grid[row-1][col] + grid[row+1][col] + grid[row-1][col+1] + grid[row][col+1] + grid[row+1][col+1]
    elif (row > 0 or row < len(grid)-1) and col == len(grid[0])-1:
        return grid[row-1][col] + grid[row+1][col] + grid[row-1][col-1] + grid[row][col-1] + grid[row+1][col-1]
    else:
        return 0
其实在Checkio上面有人用4行就解决了这个问题,那个人真的好厉害啊:
def count_neighbours(grid, row, col):
    rows = range(max(0, row - 1), min(row + 2, len(grid)))
    cols = range(max(0, col - 1), min(col + 2, len(grid[0])))
    return sum(grid[r][c] for r in rows for c in cols) - grid[row][col]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-24 00:10:47 | 显示全部楼层
我是来学习的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 16:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表