code: def event_availability_array(events):
      
      array = np.ones((len(events), len(events)))
      for row, event in enumerate(events):
          for col, other_event in enumerate(events):
              if row != col:
                  tags = set(event.tags)
                  events_share_tag = len(tags.intersection(other_event.tags)) > 0
                  if (other_event in event.unavailability) or events_share_tag:
                      array[row, col] = 0
                      array[col, row] = 0
      return array
docs: Return a numpy array mapping events to events
  
      - Rows corresponds to events
      - Columns correspond to events
  
      Array has value 0 if event cannot be scheduled at same time as other event
      (1 otherwise)