code: function coalesce(ranges) {
    if (!ranges.length) return [];
    var results=[ranges[0]];
    ranges.reduce(function (a,b) {
      var prev=results.length-1;
      if (a[a.length-1]===pred(b[0])) {
        return results[prev]=results[prev][0]+b[b.length-1];
      }
      results.push(b);
      return b;
    });
    return results.reduce(function (results,range) {
      if (range.length===2 && range[0]===pred(range[1])) {
        results.push(range[0]);
        results.push(range[1]);
      } else {
        results.push(range);
      }
      return results;
    },[]);
  }
docs: Coalesce closed ranges.
  ['ac','d','ez'] will be coalesced to ['az']
  @param {[Range]} ranges Sorted disjoint ranges return by `classify`.
  @return {[Range]} Compressed ranges