简单的方法来确定红宝石闰年?(Easy way to determine leap year in

2019-08-18 02:10发布

有一种简单的方法来确定是否一年是闰年?

Answer 1:

使用Date#leap?

now = DateTime.now 
flag = Date.leap?( now.year ) 

Date.leap?( 2018 ) # => false

Date.leap?( 2016 ) # => true


Answer 2:

试试这个:

is_leap_year = year % 4 == 0 && year % 100 != 0 || year % 400 == 0


Answer 3:

您的理解:

def leap_year?(year)
  if year % 4 == 0
    if year % 100 == 0
      if yearVar % 400 == 0
        return true
      end
      return false
    end
    return true
  end
  false
end

这可以写成:

def leap_year?(year)
  (year % 4 == 0) && !(year % 100 == 0) || (year % 400 == 0)
end


Answer 4:

这里是我这问同样的问题exercism.io问题的答案。 你被明确告知忽略了可以实现它作为演习的一部分,任何标准库函数。

class Year
  attr_reader :year

  def initialize(year)
    @year = year
  end

  def leap?
    if @year.modulo(4).zero?
      return true unless @year.modulo(100).zero? and not @year.modulo(400).zero?
    end

    false
  end
end


Answer 5:

def leap_year?(num)
 if num%4 == 0 && num%100 != 0  
    true
 elsif num%400 == 0 
    true
 elsif num%4 == 0 && num%100 == 0 && num%400 != 0 
    false
  elsif num%4 != 0 
    false
  end
end 
puts leap_year?(2000)


Answer 6:

任何一年即能被4整除的是闰年。 但是,仍然是必须考虑的一个小错误。 为了消除这种误差,公历规定,一年就是100整除(例如,1900),只有当它也是400整除闰年。

class Date

  def self.leap?(year)
    year % 4 == 0 && year % 100 != 0 || year % 400 == 0
  end

end


Answer 7:

这其中需要一个范围:

(starting..ending).each do |year|
  next if year % 4   != 0
  next if year % 100 == 0 && year % 400 != 0
  puts year
end

来源:克里斯·派恩学习计划



Answer 8:

用最少的费用比较,你可以这样做:

  • 首先/加长版
def leap_year?(year)
  # check first if year is divisible by 400
  return true if year % 400 == 0
  year % 4 == 0 && year % 100 != 0
end
  • 较短的版本

我们可以通过短路或(做同样的检查|| ):

def leap_year?(year)
  year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)
end


Answer 9:

变量n取一年来测试,如果它是一个闰年和虚假如果它不是真正的打印。

n=gets.to_i 
n%4==0 ? n%100==0 ? n%400 ?(puts true):(puts false) :(puts true) :(puts false)


文章来源: Easy way to determine leap year in ruby?