Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Problem 1
- def multiply_three_or_five(from, to)
- (from...to).select { |i| i%3==0 || i%5==0 }.inject(:+)
- end
- "Result:"
- #=> pry(main)> multiply_three_or_five(0, 1000)
- #=> 233168
- #Problem 2
- def find_fibonachi_array(start, last_number)
- while start[-2] + start[-1] < last_number
- start << start[-2] + start[-1]
- end
- start
- end
- def sum(fibonachi_array)
- fibonachi_array.inject(0) {|sum, num| num.even? ? sum+num : sum }
- end
- def even_fibonachi_numbers_sum(start, last_number)
- sum(find_fibonachi_array(start, last_number))
- end
- #=>pry(main)> even_fibonachi_numbers_sum([1,2], 4_000_000)
- #=> 4613732
- #Problem 3
- def prime_factors(last_number)
- return [] if last_number == 1
- factor = (2..last_number).find { |number| last_number%number == 0 }
- #puts "factor is: " + factor.to_s
- #puts "prime_factor is: " + prime_factors(last_number / factor).to_s
- [factor] + prime_factors(last_number / factor)
- end
- #=> prime_factors(600_851_475_143)
- #=> 6857
- # Problem 4
- def polindrome_number(first_num, second_num=first_num)
- product = first_num * second_num
- return product if number_is_polindrome?(product)
- first_num, second_num = find_pair_of_numbers(first_num, second_num)
- polindrome_number(first_num, second_num)
- end
- def number_is_polindrome? number
- number.to_s == number.to_s.reverse
- end
- def find_pair_of_numbers(num1, num2)
- if num2 > 900
- num2 -= 1
- else
- num1 -= 1
- num2 = num1
- end
- [num1, num2]
- end
- puts polindrome_number(999)
- # Problem 5
- def smallest_multiply
- (from..to).inject(1) { |result_number, number| result_number.lcm(number) }
- end
- #=> smallest_multiply(1,20)
- #=> 232792560
- # Problem 6
- def difference(from, to)
- square_sum(from, to) - sum_of_squares(from, to)
- end
- def square_sum(from,to)
- sum = (from..to).inject(:+)
- sum * sum
- end
- def sum_of_squares(from, to)
- (from..to).inject(0) { |sum, num| sum+num**2}
- end
- #=> difference(1,10)
- #=> 2640
- #=> difference(1,100)
- #=> 25164150
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement