快速跟踪最长的连胜纪录

时间:2017-05-25 05:37:55

标签: swift

道歉,如果这太简单或以前曾被问过,但我无法在任何地方找到解决方案。

我有一个随机生成'yes'或'no'的函数。如何跟踪和存储序列中连续'no'的最长条纹?

提前致谢!

2 个答案:

答案 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 :(得分:1)

例如,假设GenerateAnswear()是您生成YesNo

的函数
func GenerateAnswear() -> String {
    switch arc4random() % 2 {
    case 0:
        return "Yes"
    default:
        return "No"
    }
}

让我们声明一个变量来存储带有初始值0的条纹 要连续生成一些answears,我们做一个while循环。 在这个循环中,我们调用我们的方法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

计算No的条纹我们正在验证如果等于No并且streak的当前1值增加0或{{ 1}}如果生成的answear与No

不同
    streak = answear == "No" ? streak + 1 : 0

这里有一个上面代码的eample输出。 Streak值存储在我们的局部变量中。做你想做的事情

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