Saturday, August 31, 2013

Coderbyte: Array Addition I (Ruby)

PROBLEM

Have the function ArrayAdditionI(arr) take the array of numbers stored in arr and return the string true if any combination of numbers in the array can be added up to equal the largest number in the array, otherwise return the string false. For example: if arr contains [4, 6, 23, 10, 1, 3] the output should return true because 4 + 6 + 10 + 3 = 23. The array will not be empty, will not contain all the same elements, and may contain negative numbers

SOLUTION

def ArrayAdditionI(arr)
    greatest_number = arr.max
    total = 0

    total = arr.inject(:+) - greatest_number
    
    return true if total == greatest_number
    
    arr.each do |number|
        if number != greatest_number
            return true if total - number == greatest_number
        end
    end
    
    return false
end

print ArithGeo(STDIN.gets)