Swift транспонировать двумерный массив - PullRequest
0 голосов
/ 27 сентября 2019

Вот задача) Объявить переменную - матрицу целых чисел и инициализировать ее случайными (можно использовать системный генератор случайных чисел) значениями (т.е. не вручную).

Рекомендуетсяпредусмотреть возможность установки N & M в качестве констант и автоматически инициализировать матрицу в цикле.

Поменять значения строк в четных позициях на значения строк в нечетных позициях.

Как и впредыдущее задание, вы должны использовать собственное («ручное») решение.

Работа с матрицами должна выполняться не как работа с векторами, а как работа с двойным / вложенным индексом

Например: Что мы получили:

[0, 1, 2, 3]

[4, 5, 6, 7]

[8, 9, 0,1]

[2, 3, 4, 5]

Что мне нужно:

[4, 5, 6, 7]

[0, 1, 2, 3]

[2, 3, 4, 5]

[8, 9, 0, 1]

Я пробовал это

var table: [[Int]] = []
var A: Int
var B: Int
var newTable: [[Int]] = []
var arrChet : [[Int]] = []
var arrNechet: [[Int]] = []

func createMatrix (A: Int, B: Int) -> [[Int]] {
    for i in 1...A {
        var subArray = [Int]()
        for j in 1...B {
            subArray.append(i * j * 2)
        }
        table.append(subArray)
    }
    return table
}
table = createMatrix(A: 4, B: 5) 
print("generated table:")
for row in table {
     print (row)
 }
for (index, _) in table.enumerated() {
    if (index+1) % 2 == 0 {
        arrNechet.append(table[index])
    } else {
        arrChet.append(table[index])
    }
}
for i in 0..<arrNechet.count {
    newTable.append(arrNechet[i])
    if arrChet.count > i {
        newTable.append(arrChet[i])
    }
}
print("\n new table: ")
  for row in newTable {
      print (row)
  }

Вот ответ на мое решение:

«Нарушение требования: Работа с матрицами должна выполняться не как работа с векторами, а как работа с двойным / вложенным индексом.

Кроме того, реализация крайне неэффективна, не использует двойной индекс, то есть двойные квадратные скобки."

Пожалуйста, помогите))

...