我在做一些编程时昨晚在互联网上搜索,我注意到有一个有趣的测试,雇主有时会用它来测试程序员,看看他们是否真的可以将代码应用于现实世界的问题.它被称为FizzBuzz测试,它的工作原理如下.
"编写一个打印数字1到100的程序.但是,对于3的倍数,打印"Fizz"而不是数字和5的倍数,打印"Buzz".对于数字是三和五的倍数打印" 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)
}
}
Run Code Online (Sandbox Code Playgroud)
而且,虽然这符合要求,但我觉得非常不满意使用它作为我的解决方案(对我来说似乎太简单和基本).
我最近读过Matt Neuburg的书"iOS 9编程基础与Swift"(这本书让我大开眼界,在很多层面上睁开眼睛).我试图尽可能地使用Swift-y(传递函数等)而着迷.然后,我开始意识到我真的不知道如何改进这段代码.
因此,我转向Swift社区,希望您能够更好地了解有关FiizBuzz测试问题的最复杂的Swift答案.
我正在拼命地尝试改进我的Swift编程,并希望了解一种更好的Swift-y编程方法.
按照Dan 在评论中的链接,我提出了:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
......