前提・実現したいこと
配列をシャッフルして先頭を取り除き、全て無くなればもう1度シャッフルする。
しかし、条件として前回の配列の末尾と新しい配列の先頭と二番目が同じものでなくなるまで繰り返すという関数を作っています。
問題ないときはうまくシャッフルするのですが、時々Fatal error: Index out of rangeが出ます。
whileの中に
sa4 = shuffledArray[4]
rs0 = reShuffledArray[0]
rs1 = reShuffledArray[1]
を書いているのは元々はエラーが出る代わりに while ループから抜け出せないということがあった為です。
このエラーを出さないためにはどのようにすればよいかご教示いただければと思います。
該当のソースコード
Swift
1var strArray = ["Apple", "Google", "Facebook", "Instagram", "Twitter"] 2 3func shuffle() { 4 5 var shuffledArray = strArray.shuffled() 6 var sa4 = shuffledArray[4] 7 8 for _ in shuffledArray { 9 print(shuffledArray) 10 shuffledArray.remove(at: 0) 11 } 12 13 var reShuffledArray = strArray.shuffled() 14 var rs0 = reShuffledArray[0] 15 var rs1 = reShuffledArray[1] 16 17 while rs0 == sa4 || rs1 == sa4 { 18 _ = reShuffledArray.shuffled() 19 20 sa4 = shuffledArray[4] 21 rs0 = reShuffledArray[0] 22 rs1 = reShuffledArray[1] 23 } 24 print(reShuffledArray) 25} 26 27shuffle() 28
補足情報(FW/ツールのバージョンなど)
x code 10.2.1 swift5.0.1 macOs Mojave 10.14.5
mode_edit編集
arrow_downward自己解決方法を記入する
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー