Bir matrix işlemi

Merhabalar bir algoritma sorum olacak.
4 tane matris var ve bu matrisin her satırındaki seçtiğimiz sütundaki elemanlar listedeki sırayla yer değişecek. Mesela 1. matrisin bir sütunu 2. matrisin sütunu olacak, 2.matrisin sütunu 3.matrisin olacak, 3matrisin sütunu 4.matris olacak, 4.matrsin sütunu 1.matris olacak şekilde.

matrix1 = [[1, 1, 1], 
           [1, 1, 1], 
           [1, 1, 1]]

matrix2 = [[2, 2, 2],
           [2, 2, 2], 
           [2, 2, 2]]

matrix3 = [[3, 3, 3], 
           [3, 3, 3], 
           [3, 3, 3]]

matrix4 = [[4, 4, 4], 
           [4, 4, 4],
           [4, 4, 4]]

matrixes  = [matrix1, matrix2, matrix3, matrix4]

Beklediğimiz görüntü; mesela 1.sütunu değiştirelim :

matrix1 = [[2, 1, 1], 
           [2, 1, 1], 
           [2, 1, 1]]

matrix2 = [[3, 2, 2],
           [3, 2, 2], 
           [3, 2, 2]]

matrix3 = [[4, 3, 3], 
           [4, 3, 3], 
           [4, 3, 3]]

matrix4 = [[1, 4, 4], 
           [1, 4, 4],
           [1, 4, 4]]

Ben yapamadım şimdiden teşekkürler…

Bundan yeni başlayanlar için iyi alıştırma olurmuş:

matrix1 = [[1, 1, 1], 
           [1, 1, 1], 
           [1, 1, 1]]

matrix2 = [[2, 2, 2],
           [2, 2, 2], 
           [2, 2, 2]]

matrix3 = [[3, 3, 3], 
           [3, 3, 3], 
           [3, 3, 3]]

matrix4 = [[4, 4, 4],
           [4, 4, 4],
           [4, 4, 4]]

matrixes  = [matrix1, matrix2, matrix3, matrix4]

def scroll(x, matrixes, n):
    y = len(matrixes)
    sütunlar = []
    for m in matrixes:
        sütun = []
        for i in m:
            sütun.append(i[x])
        sütunlar.append(sütun)
    n %= y
    if n < 0:
        n += y
    for i in range(n):
        sütunlar.insert(0, sütunlar.pop())
    for m, s in zip(matrixes, sütunlar):
        for i, j in zip(m, s):
            i[x] = j

scroll(0, matrixes, -1)

from pprint import pprint

pprint(matrixes)

Hocam güzel çözmüşsünüz. Kodlarınızı satır satır açıklayabilirmisiniz. Mesela fonksiyon parametreleri x seçtiğimiz satır n akış yönü mü?

Aynen öyle. Kodları teker teker açıklamak için şuan müsait değilim daha sonra bakabiliriz.

1 Beğeni