插播题解一则: FizzBuzzWhizz
2014-05-05 15:14
585 查看
今天演示一道题及用python的一种解答,算是对前面内容的总结性应用:
FizzBuzzWhizz
你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏。此时有100名学生在上课。游戏的规则是:
1. 你首先说出三个不同的特殊数,要求必须是个位数,比如3、5、7。
2. 让所有学生拍成一队,然后按顺序报数。
3. 学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz;如果所报数字是第二个特殊数(5)的倍数,那么要说Buzz;如果所报数字是第三个特殊数(7)的倍数,那么要说Whizz。
4. 学生报数时,如果所报数字同时是两个特殊数的倍数情况下,也要特殊处理,比如第一个特殊数和第二个特殊数的倍数,那么不能说该数字,而是要说FizzBuzz, 以此类推。如果同时是三个特殊数的倍数,那么要说FizzBuzzWhizz。
5. 学生报数时,如果所报数字包含了第一个特殊数,那么也不能说该数字,而是要说相应的单词,比如本例中第一个特殊数是3,那么要报13的同学应该说Fizz。如果数字中包含了第一个特殊数,那么忽略规则3和规则4,比如要报35的同学只报Fizz,不报BuzzWhizz。
解法:一般的写法是:
def main(seq,filt,tran):
for itemNum in seq:
if(str(filt[0]) in str(itemNum)):
print(tran[0])
else:
s=''.join([tran[i] for i in range(3) if itemNum%filt[i]==0 ])
if len(s)==0:
print(itemNum)
else:
print(s)
main(range(1,101),[3,5,7],['Fizz','Buzz','Whizz'])
我们不是一般的,我们是二班、三班、兴趣班的,所以写成这样:
(lambda seq,filt,tran:[(lambda d: (d.__setitem__('s',''.join([tran[i] for i in range(3) if itemNum%filt[i]==0 ])),(d['s'],itemNum)[len(d['s'])==0])[1],lambda d: tran[0])[str(filt[0]) in str(itemNum)]({}) for itemNum in seq])(xrange(1,101),[3,5,7],['Fizz','Buzz','Whizz'])
FizzBuzzWhizz
你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏。此时有100名学生在上课。游戏的规则是:
1. 你首先说出三个不同的特殊数,要求必须是个位数,比如3、5、7。
2. 让所有学生拍成一队,然后按顺序报数。
3. 学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz;如果所报数字是第二个特殊数(5)的倍数,那么要说Buzz;如果所报数字是第三个特殊数(7)的倍数,那么要说Whizz。
4. 学生报数时,如果所报数字同时是两个特殊数的倍数情况下,也要特殊处理,比如第一个特殊数和第二个特殊数的倍数,那么不能说该数字,而是要说FizzBuzz, 以此类推。如果同时是三个特殊数的倍数,那么要说FizzBuzzWhizz。
5. 学生报数时,如果所报数字包含了第一个特殊数,那么也不能说该数字,而是要说相应的单词,比如本例中第一个特殊数是3,那么要报13的同学应该说Fizz。如果数字中包含了第一个特殊数,那么忽略规则3和规则4,比如要报35的同学只报Fizz,不报BuzzWhizz。
解法:一般的写法是:
def main(seq,filt,tran):
for itemNum in seq:
if(str(filt[0]) in str(itemNum)):
print(tran[0])
else:
s=''.join([tran[i] for i in range(3) if itemNum%filt[i]==0 ])
if len(s)==0:
print(itemNum)
else:
print(s)
main(range(1,101),[3,5,7],['Fizz','Buzz','Whizz'])
我们不是一般的,我们是二班、三班、兴趣班的,所以写成这样:
(lambda seq,filt,tran:[(lambda d: (d.__setitem__('s',''.join([tran[i] for i in range(3) if itemNum%filt[i]==0 ])),(d['s'],itemNum)[len(d['s'])==0])[1],lambda d: tran[0])[str(filt[0]) in str(itemNum)]({}) for itemNum in seq])(xrange(1,101),[3,5,7],['Fizz','Buzz','Whizz'])
相关文章推荐
- 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏
- ThoughtWorks面试题-FizzBuzzWhizz
- 关于今天很热的--FizzBuzzWhizz
- 我只能写成这个版本的FizzBuzzWhizz
- 最艰难的采访IT公司ThoughtWorks代码挑战——FizzBuzzWhizz游戏
- FizzBuzzWhizz游戏的高效解法
- python完成FizzBuzzWhizz问题(拉勾网面试题)示例
- FizzBuzzWhizz
- Fizz-Buzz-Whizz
- 使用python实现拉钩网上的FizzBuzzWhizz问题示例
- shell实现FizzBuzzWhizz问题示例(拉勾网面试题)
- 关于 fizz-buzz-whizz
- python完成FizzBuzzWhizz问题(拉勾网面试题)示例
- FizzBuzzWhizz 游戏
- java实现拉钩网上的FizzBuzzWhizz问题示例
- 从易于扩展扩展的角度来设计FizzBuzzWhizz
- ThoughtWorks FizzBuzzWhizz
- ThoughtWorks FizzBuzzWhizz 代码实现
- FizzBuzzWhizz问题python解法
- FizzBuzzWhizz是算法题吗?我从设计的角度去解决的。