Как в 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) { "" }