【问题标题】:Ruby FizzBuzz And/OrRuby FizzBu​​zz 和/或
【发布时间】:2013-09-25 02:10:12
【问题描述】:

问题是:“编写一个程序,打印从 1 到 100 的数字。但是对于 3 的倍数,打印“Fizz”而不是数字,对于 5 的倍数,打印“Buzz”。对于是三个和五个都打印“FizzBu​​zz”。”

我下面的代码有效,但我不明白为什么最后一行是 f || b 而不是 f & b?

为了返回 FizzBu​​zz,不应该 f 和 b 都为真,而不是 f OR b?

puts (1..100).map {|i|
  f = i % 3 == 0 ? 'Fizz' : nil
  b = i % 5 == 0 ? 'Buzz' : nil
  f || b ? "#{ f }#{ b }" : i
}

【问题讨论】:

  • 你是怎么写出你不懂的工作代码的?
  • 只需在纸上处理i 值的代码,例如35151
  • 我先尝试了 &,因为我认为它会起作用。然后我尝试了||它奏效了。我就是这样管理的。
  • 请注意,& 不是 || 的伴侣,&& 是。 (&bitwise and,不是布尔值。它的同伴是 |。)

标签: ruby fizzbuzz


【解决方案1】:
如果f 不为空,

f || b 为真b 不为空,或两者兼有,因为这是 OR 定义的一部分。

如果该表达式为真,则打印"#{ f }#{ b }",这将打印FizzBuzzFizzBuzz,具体取决于fb(或两者都不为空),因为空变量将被替换为空白字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2018-07-18
    • 2012-11-04
    • 2016-01-15
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多