Skip to content

Instantly share code, notes, and snippets.

@OlesyaK2
Created February 21, 2016 16:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save OlesyaK2/d3835c9a025380b7764c to your computer and use it in GitHub Desktop.
Save OlesyaK2/d3835c9a025380b7764c to your computer and use it in GitHub Desktop.
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку "end" (без кавычек) Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы на позициях (i-1, j), (i+1, j), (i, j-1), (i, j+1)…
#arr[col_len-1][row_len]+arr[col_len+1][row_len]+arr[col_len][row_len-1]+arr[col_len][row_len+1]
col_len=0
row_len=1
md=""
arr=[]
a0,b0,an,bn=0,0,0,0
# формируем матрицу
while row_len>0: # бесконечный цикл
md=input().split() # разбиваем строку на элементы для добавления в список
if "end" in md:
row_len-=1
break # если в строке попалось END, закрываем список
else:
if row_len==1:
col_len=len(md)
row_len+=1 # счетчик
arr.append(md) # добавляем элементы строки в двухмерный список
# формируем нулевую матрицу
arr_sum = [[0 for j in range(col_len)] for i in range(row_len)]
# определяем в матрице элементы из суммы смежных
for i in range(len(arr)):
for j in range(len(arr[i])):
if i-1<0: a0=row_len-1
else: a0=i-1
if j-1<0: b0=col_len-1
else: b0=j-1
if i+1>row_len-1: an=0
else: an=i+1
if j+1>col_len-1: bn=0
else: bn=j+1
arr_sum[i][j]= int(arr[a0][j])+int(arr[an][j])+int(arr[i][b0])+int(arr[i][bn])
# выводим новую матрицу на экран
for row in arr_sum:
for elem in row:
print(elem, end=' ')
print()
@Foollox
Copy link

Foollox commented Jan 13, 2021

n = ''
m = []
while True:
    n = str(input()) # ввод строк
    if n == 'end':
        break
    m.append([int(s) for s in n.split()]) 
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)]

for i in range (li):
    for j in range (lj):
        print(new[i][j], end =' ')
    print()

@karsunsky
Copy link

a = []
b = input()
while b != "end":
a.append(b.split())
b = input()
for i in range(len(a)):
for j in range(len(a[i])):
print(int(a[i-1][j]) + int(a[i-len(a)+1][j]) + int(a[i][j-1]) + int(a[i][j-len(a[i])+1]), end =" ")
print()

@karsunsky
Copy link

line, matrix, lI = input(), [], 0

while line != 'end':
matrix +=[[int(i) for i in line.split()]]
line = input()
lI += 1

lJ = len(matrix[0])

[([print(matrix[i - 1][j] + matrix[i][j - 1] + matrix[i][(j + 1) % lJ] + matrix[(i + 1) % lI][j], end=' ') for j in range(lJ)], print()) for i in range(lI)]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment