2009-10-14 70 views

回答

5

試試這個:

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

的理解:

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 
2
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) 
3

這裏是我這問同樣的問題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 
+0

注意我說的是http://exercism.io,它要求你自己實現邏輯作爲編碼練習。 – MattC 2013-11-28 01:38:59

0

這其中需要一個範圍:

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

來源:克里斯·派恩

0

學習計劃使用最少的費用比較,你可以這樣做:

  • 首版/更長版本
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