summaryrefslogtreecommitdiff
path: root/misc/find-non-duplicate-number/main.rb
blob: 4ec9ac0f12e8457edb4c445b91bf610a6b6a018f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env ruby

def assert_equal(x, y)
  raise [x, y].inspect unless x == y
end

def find_non_duplicate(items)
  counts = Hash.new(0)

  items.each do |item|
    counts[item] += 1
    if counts[item].even?
      counts.delete(item)
    end
  end

  counts.keys[0]
end

def find_non_duplicate(items)
  result = 0
  items.each do |item|
    result = result ^ item
  end
  result
end

assert_equal(1, find_non_duplicate([4, 3, 2, 4, 1, 3, 2]))