Как в Kotlin случайным образом выбрать 1 значение в каждом столбце двумерного массива?

Как в Kotlin случайным образом выбрать 1 значение в каждом столбце двумерного массива и результат записать в новый массив?

Дано:

val table = Array(3, { Array(3, {0}) })
table[0] = arrayOf(1, 2, 3)     // первая строка таблицы
table[1] = arrayOf(4, 5, 6)     // вторая строка таблицы
table[2] = arrayOf(7, 8, 9)     // третья строка таблицы

Вывод должен быть, к примеру, таким: 1, 8, 6


Ответы (2 шт):

Автор решения: Danila Kartovitskii

Вы можете использовать Random.

Вот пример программы :)

import kotlin.random.Random

fun main() {
    val table = Array(3) { Array(3) { 0 } }
    table[0] = arrayOf(1, 2, 3)     // первая строка таблицы
    table[1] = arrayOf(4, 5, 6)     // вторая строка таблицы
    table[2] = arrayOf(7, 8, 9)     // третья строка таблицы

    val numRows = table.size
    val numCols = table[0].size

    val resultArray = Array(numCols) { 0 }

    for (col in 0 until numCols) {
        val randomRow = Random.nextInt(numRows)
        resultArray[col] = table[randomRow][col]
    }

    println("Случайные значения из каждого столбца:")
    println(resultArray.joinToString(", "))
}

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

→ Ссылка
Автор решения: Владимир

Основываясь на решении с элементами типа Int попробовал решить задачу, в которой элементы типа String

table[0] = arrayOf("A", "B", "C")
table[1] = arrayOf("D", "E", "F")
table[2] = arrayOf("G", "J", "I")

Для решения этой задачи пришлось внести изменения в две строки:

val table: Array<Array<String>> = Array(3) {Array(3) {""} }
val resultArray = Array(numCols) { "" }
→ Ссылка