gpt4 book ai didi

swift - && 和 ||在 while 循环中

转载 作者:可可西里 更新时间:2023-11-01 00:36:02 26 4
gpt4 key购买 nike

嗨,我在这个挑战中遇到了一个小问题:

给定一个 2 到 12 之间的数字,使用两个六面骰子计算掷出该数字的几率。通过详尽地遍历所有组合并计算为您提供该值的结果的分数来计算它。不要使用公式。

我的解决方案是:

let givenNumber = 10
var cube1 = 1
var cube2 = 1
var count = 0
let allCombinations = 36

while (cube1 != 6 || cube2 != 6) {

if cube1 + cube2 == givenNumber {
count += 1
}

if cube1 != 6 {
cube1 += 1
} else {
cube1 = 1
cube2 += 1
}
}

let probability = Double(count) / Double(allCombinations)
print(probability)

它有效,但我不明白为什么 :) 因为我认为它应该是:

while (cube1 != 6 && cube2 != 6)

我希望只要 cube1 和 cube2 不等于 6 就重复这个循环(不确定这在英语语法中是否正确,但我希望你明白我的意思),当 cube1 和 cube2 都等于6 它应该停止。但是当只有 cube1 等于 6 时它会停止。我认为它会用 || 来做到这一点。 :/.

因为我不明白所以我做了这个不同的:

 let givenNumber = 10
var cube1 = 1
var cube2 = 1
var count = 0
let allCombinations = 36

while true {

if cube1 + cube2 == givenNumber {
count += 1
}

if cube1 != 6 {
cube1 += 1
} else {
cube1 = 1
cube2 += 1
}

if cube1 == 6 && cube2 == 6 {
break
}
}

let probability = Double(count) / Double(allCombinations)
print(probability)

没关系,但也许你能解释一下为什么我对这个“while &&/||”有误?

谢谢!

最佳答案

这是基本逻辑,让我告诉你哪里错了。这个

I want that this loop is repeated as long as cube1 and cube2 are not equal to 6

转换为 !(cube1 == 6 && cube2 == 6)不是 (cube1 != 6 && cube2 != 6).

可以使用 logic formulas 减少前者(德摩根定律)得到你原来的表达方式:

!(cube1 == 6 && cube2 == 6)
!(cube1 == 6) || !(cube2 == 6)
cube1 != 6 || cube2 != 6

关于swift - && 和 ||在 while 循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41086163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com