Last active
October 27, 2015 13:32
-
-
Save TylerRockwell/0a1cb890eacc4eff76d6 to your computer and use it in GitHub Desktop.
Challenge 10-27.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'minitest/autorun' | |
require 'minitest/pride' | |
# Write a method which accepts an array as the first paramater and a number | |
# as the second parameter. Return true if two of the numbers in the array sum | |
# to the second parameter. | |
def complements?(array, sum) | |
return false unless array | |
return false if array.length < 2 | |
array.each_index do |x| | |
array.each_index do |y| | |
unless x == y | |
return true if array[x] + array[y] == sum | |
end | |
end | |
end | |
return false | |
end | |
class DoubleLoopChallenge < MiniTest::Test | |
def test_exact_match_arrays | |
assert complements?([1, 0], 1) | |
assert complements?([-4, 4], 0) | |
assert complements?([25, 43], 68) | |
refute complements?([25, 25], 25) | |
refute complements?([1, 3], 25) | |
refute complements?([-25, 25], 25) | |
end | |
def test_too_small_arrays | |
refute complements?([25], 25) | |
refute complements?([], 25) | |
refute complements?(nil, 25) | |
end | |
def test_bigger_arrays | |
assert complements?([1, 0, 2, 17, 8], 1) | |
assert complements?([24, 78, 0, -4, 4], 0) | |
assert complements?([1, 25, 3, 8, -8, 43], 68) | |
refute complements?([18, 25, 43, 25, 98, 10], 25) | |
refute complements?([12, 2, 3, 9, 11], 25) | |
refute complements?([25, -25, 25, -25, 25], 25) | |
end | |
def test_double_counting | |
refute complements?([12, 0], 24) | |
refute complements?([50, -10], 100) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment