このリソース(Kotlinの問題解決)を提供してくれた@RedBassettに感謝します:https://kotlinlang.org/docs/tutorials/koans.html
私はこの質問がここに存在することを知っています:
しかし、私はKotlinを初めて使用するので、Kotlinの直接的な機能について調べたいと思います。そのため、タイトルが示すように、数字を繰り返さずに4桁の数字を生成する(その後、長さxに簡単に適応できるようにする)ためのKotlin固有の方法を見つけようとしています。
これは私の現在の実用的なソリューションであり、より多くの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
)は、実際にはすでに一連の数値です。新しいランダムを繰り返し生成する代わりに、そのシーケンスのサブセットを使用できます。実際、これはあなたがリンクした質問に対する受け入れられた答えの解決策です。練習のために自分で実装したい場合は、次のヒントを参考にしてください。
for
そのソリューションの最初のループは、範囲があるため、Kotlinでは不要です。0..9
同じことをします、あなたはそこで正しい軌道に乗っています。
Kotlinでは、引数を指定.shuffled()
せずに範囲を直接呼び出すことができますCollections.shuffle()
。
範囲全体から文字列を作成してから部分文字列を返すと、別のループを回避できます。
私の解決策を(コメントに他の人からの入力とともに)見たい場合は、ここのネタバレにあります:
fun getUniqueNumber(length:Int)=(0..9).shuffled()。take(length).joinToString( '')
(これは10を超える長さを適切に処理しないことに注意してください。ただし、実装方法を理解するのはあなた次第です。使用subList()
してからtoString()
、またはtoString()
、次にsubstring()
、出力は同じである必要があります。)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加