/// <summary>
 /// Get a list of all possiblities for course placement
 /// </summary>
 /// <param name="course">course to inspect</param>
 /// <param name="individual">individual to be inspected</param>
 /// <returns>List of the possibilities</returns>
 private List<PlacementContainer> GetPossibilitiesForCourse(int course, Individual individual)
 {
     List<PlacementContainer> possibilities = new List<PlacementContainer>();
     int neededNumberOfBlocks = ttData.Courses[course].NumberOfBlocks;
     for (int day = 0; day < individual.Courses.GetLength(1); day++)
     {
         for (int block = 0; block < individual.Courses.GetLength(2); block++)
         {
             if (block + neededNumberOfBlocks - 1 < individual.Courses.GetLength(2))
             {
                 for (int room = 0; room < individual.Rooms.GetLength(0); room++)
                 {
                     if (IsValidForCourse(course, day, block, room, individual))
                     {
                         PlacementContainer c = new PlacementContainer();
                         c.day = day;
                         c.block = block;
                         c.room = room;
                         possibilities.Add(c);
                     }
                 }
             }
         }
     }
     return possibilities;
 }
 private static int SortPlacementContainerByBlock(PlacementContainer x, PlacementContainer y)
 {
     if (x.block > y.block)
         return +1;
     if (x.block < y.block)
         return -1;
     return 0;
 }