meetingCondenser

by not important

HTML

<script src="//searls.github.io/jasmine-all/jasmine-all-min.js"></script>

CoffeeScript

# meeting time condenser
# [(0, 1), (3, 5), (4, 8), (10, 12), (9, 10)]
# [(0, 1), (3, 8), (9, 12)]
condenseMeetingTimes = (meetingTimes) ->
    meetingTimes.sort (a, b) ->
        diff = a[0] - b[0]
        if diff is 0
            diff = a[1] - b[1]
        diff
    mergedMeetings = []
    for times, index in meetingTimes
        if index is 0
            mergedMeetings.push times
            continue
        lastTimes = mergedMeetings[mergedMeetings.length - 1]
        [startTime, endTime] = times
        if lastTimes[1] >= startTime
            lastTimes = [lastTimes[0], Math.max(endTime, lastTimes[1])]
            mergedMeetings[mergedMeetings.length - 1] = lastTimes
        else
            mergedMeetings.push times
    mergedMeetings

describe 'condenseMeetingTimes', ->
    it 'works', ->
        results = condenseMeetingTimes [
            [0, 1]
            [3, 5]
            [4, 8]
            [10, 12]
            [9, 10]
        ]
        expect(results).toEqual [[0, 1], [3, 8], [9, 12]]