Skip to content

Instantly share code, notes, and snippets.

@keithrbennett
Last active August 29, 2015 14:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keithrbennett/2ec21176864e7239c97a to your computer and use it in GitHub Desktop.
Save keithrbennett/2ec21176864e7239c97a to your computer and use it in GitHub Desktop.
Leap Year Calculation with Lambdas
#!/usr/bin/env rspec
def leap_year?(year)
is_mult_of = ->(year, multiplier) { year % multiplier == 0 }
return false unless is_mult_of.(year, 4)
return true unless is_mult_of.(year, 100)
return is_mult_of.(year, 400)
end
# This way is more verbose but might be clearer.
def leap_year_2?(year)
fn_multiple_of = ->(multiplier) { ->(a_year) { a_year % multiplier == 0 } }
mult_of_4 = fn_multiple_of.(4)
mult_of_100 = fn_multiple_of.(100)
mult_of_400 = fn_multiple_of.(400)
return false unless mult_of_4.(year)
return true unless mult_of_100.(year)
return mult_of_400.(year)
# mult_of_4.(year) && ((!mult_of_100.(year)) || (! mult_of_400.(year)))
end
describe 'leap_year?' do
test_a_year = ->(year, expected_result) do
specify "Year #{year} should return #{expected_result}" do
leap_year?(year).should == expected_result
end
end
test_a_year.(2000, true)
test_a_year.(2001, false)
test_a_year.(2004, true)
test_a_year.(2100, false)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment