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