tiene saber febrero dias cuantos como caracteristicas calculadora bisiestos bisiesto años año ruby datetime leap-year

ruby - saber - ¿Una forma fácil de determinar el año bisiesto en rubí?



como saber si un año es bisiesto (8)

¿Hay una manera fácil de determinar si un año es un año bisiesto?


Usa la Date#leap? .

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

p.ej

Date.leap?( 2018 ) # => false Date.leap?( 2016 ) # => true


Aquí está mi respuesta para el problema exercism.io que hace la misma pregunta. Se le indica explícitamente que ignore cualquier función de biblioteca estándar que pueda implementarla como parte del ejercicio.

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


Este tiene un rango:

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

Fuente: Learn to Program por Chris Pine


La variable n toma año para probarse e imprime verdadero si es un año bisiesto y falso si no lo es.

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


Para su entendimiento:

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

Esto podría ser escrito como:

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


Prueba esto:

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


Usando la menor cantidad posible de comparaciones, puedes hacer esto:

  • Primera / versión más larga

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

  • Versión más corta

Podemos hacer la misma comprobación utilizando el cortocircuito O ( || ):

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


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)