Skip to content

Instantly share code, notes, and snippets.

@JFickel
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JFickel/9662817 to your computer and use it in GitHub Desktop.
Save JFickel/9662817 to your computer and use it in GitHub Desktop.
require 'benchmark'
def multiples(end_of_range)
multiple_sum = 0
multiples_of_three = 0
while multiples_of_three < end_of_range
multiple_sum += multiples_of_three
multiples_of_three += 3
end
multiples_of_five = 0
while multiples_of_five < end_of_range
unless multiples_of_five % 3 == 0
multiple_sum += multiples_of_five
end
multiples_of_five += 5
end
return multiple_sum
end
puts Benchmark.measure { multiples(1000) }
puts multiples(1000)
def sum_mult num
(1..num-1).to_a.keep_if{|n| n % 3 == 0 || n % 5 == 0}.reduce(:+)
end
puts Benchmark.measure { sum_mult(1000) }
puts sum_mult(1000)
def multiples_inject
multiples = []
(1..999).each do |num|
if num % 3 == 0 || num % 5 == 0
multiples << num
end
end
multiples.inject(:+)
end
puts Benchmark.measure { multiples_inject }
puts multiples_inject
# 0.000000 0.000000 0.000000 ( 0.000033)
# 233168
# 0.000000 0.000000 0.000000 ( 0.000222)
# 233168
# 0.000000 0.000000 0.000000 ( 0.000174)
# 233168
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment