WedX - журнал о программировании и компьютерных науках

Kotlin - объединение значений многомерных массивов

У меня вопрос о многомерных массивах в Котлине. Как мне добиться следующего результата обычным способом:

val array1 = arrayOf(
                arrayOf(1, 2, 3, 4),
                arrayOf(5, 6, 7, 8),
                arrayOf(9, 10, 11, 12)
             )

val array2 = arrayOf(
                arrayOf(11, 12, 13, 14),
                arrayOf(15, 16, 17, 18),
                arrayOf(19, 20, 21, 22)
             )

val array3 = arrayOf(
                arrayOf(21, 22, 23, 24),
                arrayOf(25, 26, 27, 28),
                arrayOf(29, 30, 31, 32)
             )

Результат путем объединения значений (в столбце и строке) array1, array2, array3 в массив того же размера:

result[0][0] = [array1[0][0], array2[0][0], array3[0][0]]
result[0][1] = [array1[0][1], array2[0][1], array3[0][1]]
result[2][0] = [array1[2][0], array2[2][0], array3[2][0]]

....

result = [
    [1, 11, 21], [2, 12, 22], [3, 13, 23], [4, 14, 24],
    [5, 15, 25], [6, 16, 26], [7, 17, 27], [8, 18, 28],
    [9, 19, 29], [10, 20, 30], [11, 21, 31], [12, 22, 32]
]

Спасибо!

17.05.2019

  • Возможно, переставить элементы в цикл? 17.05.2019

Ответы:


1

Ты можешь сделать это. Обратите внимание, что это предполагает, что все массивы и подмассивы имеют одинаковый размер.

val array1 = arrayOf(
        arrayOf(1, 2, 3, 4),
        arrayOf(5, 6, 7, 8),
        arrayOf(9, 10, 11, 12)
)

val array2 = arrayOf(
        arrayOf(11, 12, 13, 14),
        arrayOf(15, 16, 17, 18),
        arrayOf(19, 20, 21, 22)
)

val array3 = arrayOf(
        arrayOf(21, 22, 23, 24),
        arrayOf(25, 26, 27, 28),
        arrayOf(29, 30, 31, 32)
)
val arrays = arrayOf(array1, array2, array3)

val arrayLength = array1.size
val subArrayLength = array1[0].size 
val result = Array(arrayLength * subArrayLength) { index ->
    arrays.map{ it[index / subArrayLength][index % subArrayLength] }.toTypedArray()
}
17.05.2019

2

Вы можете использовать flatten()

val result = arrayOf(array1, array2, array3).flatten().toTypedArray()

Поскольку flatten возвращает список, вы можете вызвать toTypedArray(), чтобы получить результат в виде массива. Это более идиоматический способ.

18.05.2019
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]