Автор выражает признательность Кириллу Гугаеву, ученику 11 класса (в 2009/2010 учебном году) за помощь в работе над этой главой.
На клетчатой бумаге закрашены клеток так, что получившаяся фигура обладает следующими свойствами:
Каждая клетка фигуры соседствует хотя бы с одной другой клеткой (соседствует — значит имеет с соседней клеткой общую сторону; одной лишь общей вершины недостаточно для соседства):
соседние клетки (есть общая сторона) | не соседние клетки (только общая вершина) |
Не допускаются пустые области, ограниченные со всех сторон закрашенными клетками:
Фигуры с перечисленными свойствами называются полимино. Если , фигуры называют мономино, при — домино, при — тримино, при — тетрамино (это в точности фигуры тетриса), при — пентамино, при — гексамино, и т. д. В случае -клеточной фигуры мы будем говорить о -полимино.
Некоторые из -полимино получаются друг из друга поворотами на углы, кратные ; такие фигуры считаются равными:
Если среди найденных -полимино окажутся равные, из них выбирается только какая-нибудь одна.
Требуется написать программу polyomino.pl, которая для числа , указанного в командной строке, отыщет все -полимино. Форму выдачи результатов мы обсудим ниже.