Подтвердить что ты не робот

Легкий способ определить високосный год в рубине?

Есть ли простой способ определить, год ли високосный год?

4b9b3361

Ответ 2

Для вашего понимания:

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

Ответ 3

Попробуйте следующее:

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

Ответ 4

Вот мой ответ на вопрос о том, что нужно делать. Вам явно сказано игнорировать любые стандартные библиотечные функции, которые могут реализовать его как часть упражнения.

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

Ответ 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)

Ответ 6

Этот параметр принимает диапазон:

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

Источник: научиться программировать Крисом Пайном

Ответ 7

Используя минимальное количество сравнений, вы можете сделать это:

  • Первая/более длинная версия
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