main
1require 'spec_helper'
2description = <<-PROBLEM
3Given an array of integers,
4return indicies of the two numbers such that they add up to a specific target.
5PROBLEM
6
7describe description do
8 def two_sum(numbers, target:)
9 items = {}
10 numbers.each_with_index do |number, index|
11 if complement = items[target - number]
12 return [index, complement].sort
13 end
14 items[number] = index
15 end
16 []
17 end
18
19 it 'returns 2 + 7' do
20 numbers = [2, 7, 11, 15]
21 results = two_sum(numbers, target: 9)
22 expect(results).to eql([0, 1])
23 end
24
25 it 'returns 2 + 4' do
26 numbers = [3, 2, 4]
27 results = two_sum(numbers, target: 6)
28 expect(results).to eql([1, 2])
29 end
30
31 it 'returns -3 + 3' do
32 numbers = [-3, 4, 3, 90]
33 results = two_sum(numbers, target: 0)
34 expect(results).to eql([0, 2])
35 end
36
37 it 'returns 2 + 4' do
38 numbers = [1, 2, 3, 4, 5, 6]
39 results = two_sum(numbers, target: 6)
40 expect(results).to eql([1, 3])
41 end
42end