Найти - Пользователи
Полная версия: Создание матрицы..
Начало » Центр помощи » Создание матрицы..
1 2
Stroncy
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку “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
botinag
вот так это выглядит для 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)))
Stroncy
botinag ..жаль что для 2 питона, попробую переделать…
terabayt
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)]
Stroncy
terabayt, у вас программа в обще ничего не выводит или так задумано? ))
terabayt
ну вставте вконце
print(new)
Stroncy
terabayt, нужно их вывести без кавычек и скобок, и как матрицу.
terabayt
[print(' '.join(map(str, row))) for row in new]
Stroncy
terabayt, Спасибо Большое!!! прога подошла
bernar
terabayt
можете обьячнить метод [[sum([m, m, m, m]) for j in range(lj)] for i in range(li)]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB