Форум сайта python.su
0
Помогите пожалуйста расширить класс методом, который будет в двухмерном массиве находить индекс максимального элемента с помощью алгоритма с растущим градиентом. Под максимальным элементом понимаем:
L[i][j] ≥ L[i-1][j] ∧ # больше от элемента над собой L[i][j] ≥ L[i+1][j] ∧ # больше от элемента под собой L[i][j] ≥ L[i][j+1] ∧ #больше от элемента с права L[i][j] ≥ L[i][j-1] ^ # больше от элемента с лева
Отредактировано alex28746 (Апрель 2, 2015 19:44:19)
Прикреплённый файлы:
is14_aip_w04_peak2d.py (745 байт)
Офлайн
0
графически выглядит так.
Прикреплённый файлы:
прмиер.docx (19,6 KБ)
Офлайн
568
Ты правда считаешь, что вставить картинку в документ ворд это лучшее решение?
А питонячий код на питонячем форуме нужно прилеплять в виде файлов, и никак иначе?
Отредактировано FishHook (Апрель 3, 2015 05:30:53)
Офлайн
0
class Peak: """...""" def __init__(self, L): self.L = L[:] self.n = len(self.L) self.m = len(self.L[0]) def get_dim(self): return (self.n, self.m) def get_val(self, loc): return self.L[loc[0]][loc[1]] def next_element(self, loc): if loc[1] < self.m - 1: return loc[0], loc[1] + 1 else: if loc[0] < self.n - 1: return loc[0] + 1, 0 else: return -1 def greedy_ascent(self, start=(0,0)): """...""" pass if __name__ == "__main__": A = [[1, 2, 3, 4], [14, 15, 16, 5], [13, 18, 17, 6], [12, 9, 3, 7], [11, 10, 9, 8]]
Офлайн
103
как-то так
описание не очень
class Peak: """...""" def __init__(self, L): self.L = L[:] self.n = len(self.L) self.m = len(self.L[0]) self.OL = [] def get_dim(self): return (self.n, self.m) def get_val(self, loc): return self.L[loc[0]][loc[1]] def next_element(self, loc): if loc[1] < self.m - 1: return loc[0], loc[1] + 1 else: if loc[0] < self.n - 1: return loc[0] + 1, 0 else: return -1 def get_val(self, x, y, p=(1, 0)): for i, j in [(x + p[0], y + p[1])] + [(x+1, y), (x, y+1), (x, y-1), (x-1, y)]: if i < 0 or j < 0 or i >= self.m or j >= self.n or (i, j) in self.OL: continue if self.L[j][i] >= self.L[y][x]: self.OL.append((i, j)) return (i, j, (i-x, j-y)) return (x, y, []) def greedy_ascent(self, start=(0,0)): x, y, p = self.get_val(*start) while p: x, y, p = self.get_val(x, y, p) return x, y
Отредактировано terabayt (Апрель 3, 2015 19:48:26)
Офлайн
568
ООП ради ООПа это еще хуже чем вообще без ООПа.
Когда не понимаешь сути задачи, ООП не поможет.
Глупо надеяться, что задача чудесным образом решиться сама собой, лишь только мы придумаем класс.
Офлайн
103
FishHookну я не думаю что здесь имеется какая-то задача
Глупо надеяться, что задача чудесным образом решиться сама собой, лишь только мы придумаем класс.
Офлайн
568
terabaytНу так и не давайте школоте готовых решений!
прост студенту впадло подумать или т.п.
Офлайн
103
FishHookну вот сидишь 2-3 часа не отходя над какой-то задачей, башка уже не варит
Ну так и не давайте школоте готовых решений!
Офлайн
568
terabaytНу так и мальчишка, который за гаражами курит, не поймёт за что ты ему подзатыльника врезал.
а то что Вы будете им “мозги вкручивать” они все равно не поймут
Офлайн