Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 21, 2014 11:56:09

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Помогите написать человеческий код!

vasyank
задача простая а вот решение у меня проситься как в 2000 годах на паскале
Да и напишите на индексах. Итераторы в эту задачу не очень.

Офлайн

#2 Ноя. 21, 2014 14:30:54

vasyank
Зарегистрирован: 2014-11-19
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите написать человеческий код!

Shaman
ну как бы умнажение элемента на элемент както с индексами наверное не очень, хотя я только в начале пути

Офлайн

#3 Ноя. 21, 2014 14:51:24

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Помогите написать человеческий код!

vasyank
ну как бы умнажение элемента на элемент както с индексами наверное не очень
А вычетание?
Раз так настаиваете, вот заготовка:
from operator import itemgetter as ig
from itertools import imap
class MyMatrix(object):
    def __init__(self, size):
        self.data = [[0.0] * size for _ in xrange(size)]
    def row_iter(self, r):
        return iter(self.data[r])
    def col_iter(self, c):
        return imap(ig(c), self.data)
    def diag_iter(self, r, c, backw=False):
        if backw:
            bound = -1
            step = -1
        else:
            bound = len(self.data)
            step = 1
        while r != bound and c != bound:
            yield self.data[r][c]
            r += 1
            c += step
С итераторами. Наглядно, медленно, прожорливо к памяти.

Отредактировано Shaman (Ноя. 21, 2014 14:52:22)

Офлайн

#4 Ноя. 21, 2014 21:10:50

vasyank
Зарегистрирован: 2014-11-19
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите написать человеческий код!

окей так а можете продемонстрировать как при помощи map() пробежаться по срезу и перемножить все его элементы выше я писал про ошибку которую мне выдает не могу разобрать что к чему

Офлайн

#5 Ноя. 23, 2014 00:33:38

vasyank
Зарегистрирован: 2014-11-19
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите написать человеческий код!

botinag
def matrix_horizontal_max(matrix, num):
list_of_max_in_rows =
for row in matrix: # для каждой строки в матрице
list_of_mult =
for y in range(len(matrix)-num+1): # пробегаем во индексам элементов строки не доходя до конца num-1 символов, чтобы в последнее произведение попали последние num символов строки (row)

mult = 1
for x in row:
mult = mult * x

list_of_mult.append(mult) # добавляем произведение num подряд идущих элементов в список
max_of_row = max(list_of_mult) # вычисляем максимальное произведение для строки матрицы среди произведений
list_of_max_in_rows.append(max_of_row) # добавляем max_of_row в список
max_mult_in_matrix = max(list_of_max_in_rows) # вычисляем максимальное произведение среди максимумов для строк
return max_mult_in_matrix
Вобщем хотел я применить эту функцию для подcчета в диагонали (matrix<n><n> for n in range(len(matrix)) ), но начало ругаться что обьект инт() не описан. Смотрю на алгоритм и не понимаю какая ему разница вложенный список или нет.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version