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]]