def factors(num)
(1..num).select { |i| num % i == 0}
end
def mutual_factors(*nums)
nums.map { |n| factors(n) }.inject(:&)
end
I cant understand this part nums.map { |n| factors(n) }.inject(:&)
def factors(num)
(1..num).select { |i| num % i == 0}
end
def mutual_factors(*nums)
nums.map { |n| factors(n) }.inject(:&)
end
I cant understand this part nums.map { |n| factors(n) }.inject(:&)
nums.map { |n| factors(n) } returns an array of factors for each element in nums.
.inject(:&) calculates the intersection (common elements) between each array of factors.
For example,
irb(main):013:0> [2,4,10].map {|n| factors(n)}
=> [[1, 2], [1, 2, 4], [1, 2, 5, 10]]
irb(main):014:0> [[1, 2], [1, 2, 4], [1, 2, 5, 10]].inject(:&)
=> [1, 2]