Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 21, 2014 08:48:37

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

Создание матрицы..

Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку “end” (без кавычек)
Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы на позициях (i-1, j), (i+1, j), (i, j-1), (i, j+1). У крайних символов соседний элемент находится с противоположной стороны матрицы.
В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.
Пример: http://i66.fastpic.ru/big/2014/1121/ac/61deb59c25a99f247e77924ef840deac.jpg

Офлайн

#2 Ноя. 21, 2014 12:50:55

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Создание матрицы..

вот так это выглядит для 2 питона:

flag = True
matrix = []
while flag:
    string = raw_input('Vvedite stroku matricy. elementy razdelyaem probelom. end - konec vvoda: ')
    if string != 'end':
        row = map(int, string.split(' '))
        matrix.append(row)
    else:
        flag = False
def get_new_matrix(matrix):
    new_matrix = []
    for i, row in enumerate(matrix):
        new_row = []
        for j, el in enumerate(row):
            element = sum([
                matrix[i-1][j], matrix[i][j-1],
                matrix[i+1][j] if i != len(matrix)-1 else matrix[0][j],
                matrix[i][j+1] if j != len(matrix)-1 else matrix[i][0]])
            new_row.append(element)
        new_matrix.append(new_row)
    return new_matrix
for row in get_new_matrix(matrix):
    print(' '.join(map(str, row)))

Офлайн

#3 Ноя. 21, 2014 22:32:50

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

Создание матрицы..

botinag ..жаль что для 2 питона, попробую переделать…

Отредактировано Stroncy (Ноя. 21, 2014 22:41:29)

Офлайн

#4 Ноя. 22, 2014 14:41:18

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Создание матрицы..

string = m = []
while string != 'end':
    string = input('Vvedite stroku matricy. elementy razdelyaem probelom. end - konec vvoda: ')
    m.append(list(map(int, string.split(' ')))) if string != 'end' else None
li, lj = len(m), len(m[0])
new = [[sum([m[i-1][j], m[(i+1)%li][j], m[i][j-1], m[i][(j+1)%lj]]) for j in range(lj)] for i in range(li)]



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Ноя. 22, 2014 18:40:08

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

Создание матрицы..

terabayt, у вас программа в обще ничего не выводит или так задумано? ))

Офлайн

#6 Ноя. 22, 2014 19:29:30

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Создание матрицы..

ну вставте вконце

print(new)



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Ноя. 22, 2014 19:43:04

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

Создание матрицы..

terabayt, нужно их вывести без кавычек и скобок, и как матрицу.

Отредактировано Stroncy (Ноя. 22, 2014 20:04:15)

Офлайн

#8 Ноя. 22, 2014 20:27:05

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Создание матрицы..

[print(' '.join(map(str, row))) for row in new]



————————————————
-*- Simple is better than complex -*-

Офлайн

#9 Ноя. 22, 2014 20:31:37

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

Создание матрицы..

terabayt, Спасибо Большое!!! прога подошла

Офлайн

#10 Янв. 6, 2016 14:01:34

bernar
Зарегистрирован: 2016-01-06
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание матрицы..

terabayt
можете обьячнить метод [[sum([m, m, m, m]) for j in range(lj)] for i in range(li)]

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version