我很抱歉我在问这个问题,但是我的编码技能不是很好,所以我解决不了这个问题问题:有一个格子5 * 5,而一个任务是找到最小数量的“灯”,或者“1”以特殊方式入驻:在每3 * 3平方的大广场上, “灯”必须有正好4。用笔计算,我得到了这个最小数字等于7(答案是正确的)。所以我的解决办法是这样的:5 * 5格,每格3 * 3格的格必须是4格“灯”
#creates a list
grid = []
#creates lines
for row in range(5):
grid.append([])
#creates columns
for column in range(5):
grid[row].append(0)
#one "light" must be in a center
grid[2][2] = 1
#this array counts all "lights" and will notice when there are 4 of them
light_number = []
def counter():
for row in range(0, 3):
for column in range(0, 3):
if grid[row][column] == 1:
light_number.append(1)
print(len(light_number))
正如预期的那样,counter()
仅适用于第一小3×3平方米。希望只有一个功能搜索“灯”,而不是9,I`ve试着写是这样的:
def counter():
#initial range of the counter
row_min = 0
row_max = 3
column_min = 0
column_max = 3
for i in range(9):
for row in range(row_min, row_max):
for column in range(column_min, column_max):
if grid[row][column] == 1:
#write it in a list
light_number.append(1)
column_min += 1
column_max += 1
row_min += 1
row_max += 1
#print a number of total lights
print(len(light_number))
但它不工作,他说,格[行] [列] == 1是超出范围。
所以,问题是:
- 我不会写工作计数器,它应该会自动显示所有的小广场3 * 3
- 我不知道怎么写的所有组合“灯”。
如果您有任何想法,请告诉我。如果你认为可以有另一种解决方案,请说。提前致谢。
你可以给任何列表的例子,你需要得到输出。你可以看看5 * 5握把的外观以及你想从中得到什么。将有助于解决 – 2014-09-10 11:19:23
您需要重新设置每一行的column_min/max,因为您要求的第二行第1-3行4-6显然超出了范围 – user3012759 2014-09-10 11:19:25
任何你看它的方式,你的索引是错误的。如果你想迭代三列或者三行,那么你应该从索引“0”开始并在索引“2”之后结束。如果你想遍历五列/行,那么你最后的索引应该是“4”。 – afeldspar 2014-09-10 11:31:04