Advertisement
Guest User

Untitled

a guest
May 22nd, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. # Problem 1
  2. def multiply_three_or_five(from, to)
  3. (from...to).select { |i| i%3==0 || i%5==0 }.inject(:+)
  4. end
  5.  
  6. "Result:"
  7. #=> pry(main)> multiply_three_or_five(0, 1000)
  8. #=> 233168
  9.  
  10. #Problem 2
  11. def find_fibonachi_array(start, last_number)
  12. while start[-2] + start[-1] < last_number
  13. start << start[-2] + start[-1]
  14. end
  15. start
  16. end
  17.  
  18. def sum(fibonachi_array)
  19. fibonachi_array.inject(0) {|sum, num| num.even? ? sum+num : sum }
  20. end
  21.  
  22. def even_fibonachi_numbers_sum(start, last_number)
  23. sum(find_fibonachi_array(start, last_number))
  24. end
  25.  
  26. #=>pry(main)> even_fibonachi_numbers_sum([1,2], 4_000_000)
  27. #=> 4613732
  28.  
  29. #Problem 3
  30. def prime_factors(last_number)
  31. return [] if last_number == 1
  32. factor = (2..last_number).find { |number| last_number%number == 0 }
  33. #puts "factor is: " + factor.to_s
  34. #puts "prime_factor is: " + prime_factors(last_number / factor).to_s
  35. [factor] + prime_factors(last_number / factor)
  36. end
  37.  
  38. #=> prime_factors(600_851_475_143)
  39. #=> 6857
  40.  
  41. # Problem 4
  42. def polindrome_number(first_num, second_num=first_num)
  43. product = first_num * second_num
  44. return product if number_is_polindrome?(product)
  45. first_num, second_num = find_pair_of_numbers(first_num, second_num)
  46. polindrome_number(first_num, second_num)
  47. end
  48.  
  49. def number_is_polindrome? number
  50. number.to_s == number.to_s.reverse
  51. end
  52.  
  53. def find_pair_of_numbers(num1, num2)
  54. if num2 > 900
  55. num2 -= 1
  56. else
  57. num1 -= 1
  58. num2 = num1
  59. end
  60. [num1, num2]
  61. end
  62.  
  63. puts polindrome_number(999)
  64.  
  65. # Problem 5
  66. def smallest_multiply
  67. (from..to).inject(1) { |result_number, number| result_number.lcm(number) }
  68. end
  69.  
  70. #=> smallest_multiply(1,20)
  71. #=> 232792560
  72.  
  73. # Problem 6
  74. def difference(from, to)
  75. square_sum(from, to) - sum_of_squares(from, to)
  76. end
  77.  
  78. def square_sum(from,to)
  79. sum = (from..to).inject(:+)
  80. sum * sum
  81. end
  82.  
  83. def sum_of_squares(from, to)
  84. (from..to).inject(0) { |sum, num| sum+num**2}
  85. end
  86.  
  87. #=> difference(1,10)
  88. #=> 2640
  89. #=> difference(1,100)
  90. #=> 25164150
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement