これは単純すぎるか、以前に尋ねられているが、解決策が見つからない場合は謝罪してください。最速のストリークを速やかに記録する
私はランダムに「はい」または「いいえ」を生成する関数を持っています。どのように私は連続している最長のストリークを追跡して保存するのですか?
ありがとうございます!例えば
これは単純すぎるか、以前に尋ねられているが、解決策が見つからない場合は謝罪してください。最速のストリークを速やかに記録する
私はランダムに「はい」または「いいえ」を生成する関数を持っています。どのように私は連続している最長のストリークを追跡して保存するのですか?
ありがとうございます!例えば
これを試してみましたが、すべてのストリーク値を配列に保存してから最大値を見つけることができます。以下はコードです。
var streak = 0
var streakArr = [Int]()
// This will generate the random values
func randomBool() -> Bool {
return arc4random_uniform(2) == 0
}
for i in 0...10 {
let obj = randomBool()
if !obj {
streak += 1
} else {
streak = 0
}
streakArr.append(streak)
}
streakArr // OP- [1, 0, 1, 2, 0, 0, 0, 0, 1, 2, 3]
streakArr.max() // will give you the maximum value ie. 3
はGenerateAnswear()
がYes
または
func GenerateAnswear() -> String {
switch arc4random() % 2 {
case 0:
return "Yes"
default:
return "No"
}
}
No
たちはwhileループを行う行のいくつかのanswearsを生成するには、初期値0
で連勝を格納する変数を宣言することができます生成するためにあなたの関数であることを言ってみましょう。我々は我々がNo
に等しい場合coditionでanswearを確認し、answearを生成した場合1
または0
により現在streak
値の上昇を出しているために割り当てているNo
の連勝をカウントするために私たちの方法のためにGenerateAnswear()
var n = 10
var streak = 0
repeat {
let answear = GenerateAnswear()
streak = answear == "No" ? streak + 1 : 0
print(answear)
print("streak \(streak)")
n = n - 1
} while n > 0
を呼び出し、このループでは あなたは上記のコードのeample出力を持って、その後No
streak = answear == "No" ? streak + 1 : 0
ここ
異なっています。ストリーク値はローカル変数に格納されます。これまでに何をしたいのですか
No
streak 1
Yes
streak 0
Yes
streak 0
Yes
streak 0
No
streak 1
No
streak 2
No
streak 3
Yes
streak 0
Yes
streak 0
Yes
streak 0