require 'prime'
# backport ruby 2.4
class Array
def sum(identity = 0, &block)
if block_given?
map(&block).sum(identity)
else
inject { |sum, element| sum + element } || identity
end
end
end
require 'prime'
def prime_array(range)
Prime.each.lazy.drop_while{|n| n < range.begin}.take_while{|n| n <= range.end}.force
end
def napzack(array, capacity)
min = capacity / array.last
6.upto(array.length) do |n|
puts n
array.combination(n) do |set|
return set if set.sum == capacity
end
end
end
a = prime_array(2..1000)
puts napzack(a, 4096)
def prime_array(range)
Prime.each.lazy.drop_while{|n| n < range.begin}.take_while{|n| n <= range.end}.force
end
def napzack(array, capacity)
min = capacity / array.last
6.upto(array.length) do |n|
puts n
array.combination(n) do |set|
return set if set.sum == capacity
end
end
end
a = prime_array(2..1000)
puts napzack(a, 4096)