嘿,我最近接到了 fizzbuzz 任务,我用通常的方式回答,
if ((i%3==0) || (i.to_s.include?('3'))) && ((i%7==0) || (i.to_s.include?('7')))
p 'Fizzbuzz'
elsif (i%3==0) || (i.to_s.include?('3'))
p 'Fizz'
elsif (i%7==0) || (i.to_s.include?('7'))
p 'Buzz'
else
p i
end
当被要求缩短它时,我尝试使用三元运算符:
p (i%3<1 || i.to_s.include?('3')) ? ((i%7<1 || i.to_s.include?('7')) ? "Fizzbuzz" : "Fizz") : ((i%7<1 || i.to_s.include?('7')) ? "Buzz" : i)
但是当被要求使用 Enumerable 方法(选择、拒绝、收集等)解决它时,我被难住了......以前有人试过吗?
特别提到了 select/collect 方法,所以我猜他有这样的想法(请原谅糟糕的代码) (1..100).select { |i| i % 3 == 0 }.collect { "fizz" } 但我在尝试针对 3 个条件执行此操作并打印出结果时遇到了困难(即遍历输出数组):\