summaryrefslogtreecommitdiff
path: root/misc/queue-reconstruct-by-height/main.rb
blob: 9e4527e86231f9cef0875e35f120592636a05279 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env ruby

def assert_equal(x, y)
  raise "expected: #{x.inspect}, actual: #{y.inspect}" unless x == y
end

def reconstruct(input)
  sorted = input.sort_by do |item|
    [-item[0], item[1]]
  end
  result = []
  sorted.each do |item|
    result.insert(item[1], item)
  end
  result
end

input = [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
output = [[5, 0], [7, 0], [5, 2], [6, 1], [4, 4], [7, 1]]
assert_equal(output, reconstruct(input))