Подматрицы по правой диагонали - Python - PullRequest
0 голосов
/ 18 июня 2020

Программа должна принимать целочисленную матрицу размером RxC и целое число K в качестве входных данных. Программа должна вывести все целые числа от левого нижнего до верхнего right diagonal в каждой подматрице KxK без каких-либо перекрытие заданной матрицы

ПРИМЕЧАНИЕ. Значения R и C ara всегда кратны K

Пример:

Input:
4 4
1 2 3 4
5 6 7 9
8 5 4 1
6 9 0 5
2
Output:
5 2
7 4
6 5
0 1

My Код:

row , col = map(int,input().split())
mat = [list(map(int,input().split())) for i in range(row)]
k = int(input())
temp = k
# To store the right diagonal elements of all the sub matrices 
right_diagonal_elements = []
for i in range(row):
    te =temp
    # Iterating through the matrix in such a way
    #that it appends only the k th element ,
    #then k-1, and so on til the first element
    while te<=col:
        # It appends the right diagonal element but in a different order
        right_diagonal_elements.append(mat[i][te-1])
        te+=k
    if temp == 1:
        temp = k
        continue
    temp -= 1

В этом коде мой код получает все правильные диагональные элементы, но я застрял в том, как организовать его таким образом, чтобы он получал заданный результат
Right_diagonal_elements имеет [2, 4, 5, 7, 5, 1, 6, 0] для примера выше. Я застрял в том, как расположить эти элементы в списке, чтобы получить результат в примере

1 Ответ

0 голосов
/ 19 июня 2020

Если вы хотите распечатать все субматрицы по правой диагонали, тогда

R, C = map(int, input().split())
mat = [list(map(int, input().split())) for _ in range(R)]
K = int(input())
#iterating from k-1 to R by K
for i in range(K - 1, R, K):
    # Iterating j from 0 to C by K
    for j in range(0, C, K):
        # Iterating through the sub matrix of size KxK
        for p in range(K):

            print(mat[i-p][j+p], end=' ')
        print()
...