Esempio n. 1
0
 def test_efficiency(self):
   'Ensure that linear search number of comparisons is correct.'
   
   personal_calendar = eventlib.load_file('data/calendar.txt')
   event_calendar = eventlib.load_file('data/events_a.txt')
   results = eventlib.load_file('data/results_a.txt')
     
   clashes_linear.counter.reset()
   self.assertEqual(clashes_linear.find_possibilities(personal_calendar, event_calendar), results)
   self.assertEqual(clashes_linear.counter.count, 4152)
 def test_efficiency(self):
   'Ensure that the number of comparisons is correct.'
   
   events_a = eventlib.load_file('data/events_a.txt')
   events_b = eventlib.load_file('data/events_b.txt')
   events_c = eventlib.load_file('data/events_c.txt')
   merged = eventlib.load_file('data/merged_abc.txt')
   
   merge_heap_nway.counter.reset()
   self.assertEqual(merge_heap_nway.merge_calendars([events_a, events_b, events_c]), merged)
   self.assertEqual(merge_heap_nway.counter.count, 559)
Esempio n. 3
0
    def test_bisection(self):
        'Ensure that the bisection algorithm is working correctly'

        event_calendar = eventlib.load_file('data/events_b.txt')

        for i in xrange(len(event_calendar)):
            offset = clashes_binary.bisect_left(
                event_calendar, event_calendar[i].start_timestamp)
            self.assertEqual(offset, i)
Esempio n. 4
0
  # --[ WRITE CODE HERE ]-->
  # Collect all events from the event_calendar that don't clash
  # with any events in the personal_calendar.
  # <--[ WRITE CODE HERE ]--


# The command line interface. Do not modify!
if __name__ == "__main__":
  if len(sys.argv) < 2:
    print >> sys.stderr, "You must provide at least two calendars as arguments!"
  else:
    calendars = []

    # Load all calendars as specified by the command line:
    for path in sys.argv[1:]:
      calendars.append(eventlib.load_file(path))

    # The first calendar is the personal calendar:
    personal_calendar = calendars[0]
  
    # The remaining calendars are the event calendars:
    event_calendars = calendars[1:]

    # Find all possible events which don't clash with events in the personal
    # calendar:
    start = time.clock()
    possible = []
    for event_calendar in event_calendars:
      possible += find_possibilities(personal_calendar, event_calendar)
    end = time.clock()
Esempio n. 5
0
    # Firstly you need to heapify the items in heap.

    # While the heap isn't empty, take the top item and append it to merged.
    # Increment the offset by 1 and update the heap item. Then, reposition the
    # item in the heap by calling siftdown.
    # <--[ WRITE CODE HERE ]--

    return merged


if __name__ == "__main__":
    if len(sys.argv) < 2:
        print >> sys.stderr, "You must provide at least two calendars as arguments!"
    else:
        calendars = []

        for path in sys.argv[1:]:
            events = eventlib.load_file(path)
            if len(events) > 0:
                calendars.append(events)

        start = time.clock()

        merged = merge_calendars(calendars)

        end = time.clock()

        print >> sys.stderr, end - start
        print >> sys.stderr, counter
        eventlib.save(sys.stdout, merged)