2017-05-25 6 views
0

これは単純すぎるか、以前に尋ねられているが、解決策が見つからない場合は謝罪してください。最速のストリークを速やかに記録する

私はランダムに「はい」または「いいえ」を生成する関数を持っています。どのように私は連続している最長のストリークを追跡して保存するのですか?

ありがとうございます!例えば

答えて

2

これを試してみましたが、すべてのストリーク値を配列に保存してから最大値を見つけることができます。以下はコードです。

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 
1

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