да не обязательно пролог тут нужен
сгодится любой язык - алгоритм рекурсивного перебора
1) ставим занятие в сетку
2) если поставить не получается, возвращаемся на шаг назад, сдвигаем занятие, идем на п. 1
ничего фантастического, тривиальная задача (не пугайте человека)