昨晚我正在网上搜索一些编程,我注意到有一个有趣的测试,雇主有时会用它来测试程序员,看看他们是否真的可以将代码应用于现实世界的问题。它被称为FizzBuzz测试,它的工作原理如下。
“编写一个打印数字1到100的程序。但是,对于倍数 3,打印“Fizz”而不是数字和5的倍数,打印 “巴斯”。对于三次和五次打印的倍数的数字 “FizzBuzz”。“
现在,我坐下来很快就想出了这段代码,我把它放在了viewDidLoad方法中:
for i in 1...100 {
if i % 3 = 0 && i % 5 == 0 {
print("FizzBuzz")
} else if i % 3 == 0 {
print("Fizz")
} else if i % 5 == 0 {
print("Buzz")
} else {
print(i)
}
}
而且,尽管这符合要求,但我觉得使用它作为我的解决方案非常不满意(对我来说这似乎太简单和基本)。
我最近读过Matt Neuburg的书“iOS 9编程基础与Swift”(这本书让我大开眼界,在很多层面上睁开眼睛)。我试图尽可能地使用Swift-y(传递函数等)而着迷。然后,我发现了一种清醒而令人沮丧的认识,我真的不知道如何改进这段代码。
因此,我转向Swift社区,希望您能够更好地了解FiizBuzz测试问题的 最复杂的Swift 答案。< / p>
我正在拼命尝试改进我的Swift编程,并希望了解一种更好的Swift-y编程方法。
答案 0 :(得分:7)
在Dan的link评论中,我提出了:
for i in 1...100 {
switch (i%3, i%5) {
case (0,0): print("FizzBuzz")
case (0,_): print("Fizz")
case (_,0): print("Buzz")
default: print(i)
}
}
1
2
费兹
4
巴兹
费兹
7
8
费兹
巴兹
11个
费兹
13个
14个
FizzBuzz
...
答案 1 :(得分:0)