鱼C论坛

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

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

[复制链接]
发表于 2015-1-20 11:51:26 | 显示全部楼层
有意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-20 14:07:25 | 显示全部楼层
谢谢分享
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-20 15:14:41 | 显示全部楼层
大神们~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-21 09:56:20 | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-23 23:42:26 | 显示全部楼层
即使纯粹把所有的情况列出来也只占20多行啊。
  1. def count_neighbours(grid, row, col):
  2.     if (row < 0 or row >= len(grid)) and (col < 0 or col >= len(grid[0])):
  3.         return 0
  4.     elif (row > 0 and row < len(grid)-1) and (col > 0 and col < len(grid[0])-1) :#in the middle
  5.         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]
  6.     elif row == 0 and col == 0:# in four corners
  7.         return grid[row][col+1] + grid[row+1][col+1] + grid[row+1][col]
  8.     elif row == 0 and col == len(grid[0])-1 :
  9.         return grid[row][col-1] + grid[row+1][col-1] + grid[row+1][col]
  10.     elif row == len(grid)-1 and col == 0 :
  11.         return grid[row-1][col] + grid[row-1][col+1] + grid[row][col+1]
  12.     elif row == len(grid)-1 and col == len(grid[0])-1:
  13.         return grid[row-1][col] + grid[row][col-1] + grid[row-1][col-1]
  14.     elif row == 0 and (col > 0 and col < len(grid[0])-1): #on four sides
  15.         return grid[row][col-1] + grid[row][col+1] + grid[row+1][col-1] + grid[row+1][col] + grid[row+1][col+1]
  16.     elif row == len(grid) -1 and (col > 0 and col < len(grid[0])-1):
  17.         return grid[row][col-1] + grid[row][col+1] + grid[row-1][col-1] + grid[row-1][col] + grid[row-1][col+1]
  18.     elif (row > 0 or row < len(grid)-1) and col == 0:
  19.         return grid[row-1][col] + grid[row+1][col] + grid[row-1][col+1] + grid[row][col+1] + grid[row+1][col+1]
  20.     elif (row > 0 or row < len(grid)-1) and col == len(grid[0])-1:
  21.         return grid[row-1][col] + grid[row+1][col] + grid[row-1][col-1] + grid[row][col-1] + grid[row+1][col-1]
  22.     else:
  23.         return 0
复制代码

其实在Checkio上面有人用4行就解决了这个问题,那个人真的好厉害啊:
  1. def count_neighbours(grid, row, col):
  2.     rows = range(max(0, row - 1), min(row + 2, len(grid)))
  3.     cols = range(max(0, col - 1), min(col + 2, len(grid[0])))
  4.     return sum(grid[r][c] for r in rows for c in cols) - grid[row][col]
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-24 00:10:47 | 显示全部楼层
我是来学习的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 02:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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