gpt4 book ai didi

kotlin - 在 Kotlin 中创建没有重复元素的 4 位数字

转载 作者:行者123 更新时间:2023-12-02 12:45:21 25 4
gpt4 key购买 nike

感谢@RedBassett 提供此资源(Kotlin 问题解决):https://kotlinlang.org/docs/tutorials/koans.html

我知道这里存在这个问题:

Creating a 4 digit Random Number using java with no repetition in digits

但我是 Kotlin 的新手,想探索直接的 Kotlin 功能。因此,正如标题所暗示的那样,我正在尝试找到一种 Kotlin 特定的方法来很好地解决生成一个 4 位数字(之后很容易使其适应长度 x)而不重复数字。

这是我目前的工作解决方案,我想让它更像 Kotlin。非常感谢您提供一些意见。

fun createFourDigitNumber(): Int {
var fourDigitNumber = ""
val rangeList = {(0..9).random()}

while(fourDigitNumber.length < 4)
{
val num = rangeList().toString()
if (!fourDigitNumber.contains(num)) fourDigitNumber +=num
}

return fourDigitNumber.toInt()
}

最佳答案

因此您定义的范围 (0..9) 实际上已经是一个数字序列。您可以只使用该序列的一个子集,而不是迭代和重复生成一个新的随机数。事实上,this is the accepted answer's solution to the question you linked .如果您想自己实现它以进行练习,这里有一些建议:

  • 由于范围的原因,该解决方案中的第一个 for 循环在 Kotlin 中是不必要的。 0..9 做同样的事情,你在正确的轨道上。

  • 在 Kotlin 中,您可以直接在范围上调用 .shuffled(),而无需像他们那样使用参数调用 Collections.shuffle()

  • 如果您从整个范围创建一个字符串然后返回一个子字符串,则可以避免另一个循环。

如果你想看看我的解决方案(评论中有其他人的意见),它在此处剧透:

有趣的 getUniqueNumber(length: Int) = (0..9).shuffled().take(length).joinToString('')

(请注意,这不能很好地处理超过 10 的长度,但这取决于您如何实现。您可以使用 subList() 然后使用 toString(),或者toString(),然后是substring(),输出应该是一样的。)

关于kotlin - 在 Kotlin 中创建没有重复元素的 4 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60997363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com