Це завдання заснована на наступній головоломці: Вам дається n
по n
сітці з n
клітинами , позначених. Ваше завдання полягає в тому, щоб розділити сітку на n
частини, де кожна частина складається саме з n
комірок, кожна з яких містить точно одну позначену клітинку.
Приклад
Ось головоломка зліва та її (унікальне) рішення справа:
Виклик
Вам буде наданий набір n
нульових індексованих координат у будь-якому розумному форматі.
[(0,0), (0,3), (1,0), (1,1), (2,2)]
А ваше завдання - написати програму, яка повертає будь-який дійсний розділ (знову ж таки, у будь-якому розумному форматі).
[
[(0,0), (0,1), (0,2), (1,2), (1,3)],
[(0,3), (0,4), (1,4), (2,4), (3,4)],
[(1,0), (2,0), (3,0), (4,0), (4,1)],
[(1,1), (2,1), (3,1), (3,2), (4,2)],
[(2,2), (2,3), (3,3), (4,3), (4,4)]
]
Якщо головоломка не має рішення, програма повинна вказати на це, кинувши помилку або повернувши порожнє рішення.
Приклади введення / виводу
[(0,0)] => [[(0,0)]]
[(0,0), (1,1)] => [
[(0,0), (1,0)],
[(0,1), (1,1)]
]
[(0,0), (0,1), (1,0)] => [] (no solution)
[(0,0), (0,1), (0,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (1,1), (2,1)],
[(0,2), (1,2), (2,2)],
]
[(0,0), (0,2), (1,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (0,2), (1,1)],
[(1,2), (2,1), (2,2)],
]
Оцінка балів
Це код-гольф , тому найкоротший код виграє.