Tomaz Kastrun builds timetables:
Each meeting slot is represented as block (lasts arbitrary number of hours, mostly form 1 to 4). For conducting every block required are: pair of departmetns, room, time-slot. It is also know in advance which groups attend which class and all rooms are the same size.
Input data all departments names, room names and time-slots.
Output data are rooms and timeslots for pair of departments in a time-schedule.
Click through for the code and explanation.