Как заполнять список только уникальными значениями

Подскажите как заполнять а может только возвращать из списка уникальные числа
Нужно сделать так, чтобы в консоль выводилось три ряда с пятью столбцами из уникальных чисел на всех трех рядах.

fun card() = MutableList(3){
            MutableList(5){
                Random.nextInt(1,MAX)
            }
        }

val artur = card()

artur.forEach { row ->
      println(row)
    }

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

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

Для выполнения задачи можете использовать generateSequence и distinct.

Вот пример кода:

import kotlin.random.Random

const val MAX = 20 // Максимальное значение для случайных чисел


fun generateUniqueNumbers(amount: Int, max: Int): List<Int> {
    return generateSequence { Random.nextInt(1, max) }
        .distinct()
        .take(amount)
        .toList()
}

fun card(): List<List<Int>> {
    return List(3) {
        generateUniqueNumbers(5, MAX)
    }
}

fun main() {
    val artur = card()

    artur.forEach { row ->
        println(row)
    }
}

Функция card() создает "карту" размером 3x5

generateUniqueNumbers создает список уникальных чисел заданного количества из диапазона от 1 до MAX (Константа которую мы указали в самом начале, равная 20)

Пример выполнения программы:

[16, 8, 12, 7, 13]
[3, 16, 11, 6, 5]
[16, 9, 10, 3, 1]
→ Ссылка