Что вам нужно сделать, так это определить индексный словарный запас для каждой грани головоломки, чтобы индекс правого края мог рассказать вам, что индекс соответствующего левого края (например, , простой словарный запас: «выпуклый» и «вогнутый», «выпуклый» на лице, подразумевающий «вогнутый» на соответствующей противоположной грани), а затем классифицировать каждую фигуру в соответствии с индексирующим лексиконом. Чем точнее словарный запас, тем более дискриминационным будет сопоставление лиц и тем быстрее ваш альгонтм пойдет, но вы его реализуете. (Например, у вас может быть «плоский край, прямолинейный-левый-левый, прямой-левый-правый, вогнутый, выпуклый, ручка, ручка, ...). Мы предполагаем, что схема индексирования фактическая форма края и что существует предикат «точно соответствует (кусок1, край 1, кусок2, край 2)», что верно, только если ребра точно совпадают. Мы также предполагаем, что существует не более одного точного совпадения куска с конкретным краем.
Целью является создание набора областей, например набора связных элементов, до тех пор, пока уже невозможно будет вырастить области. Сначала отметим все части уникальными именами областей, 1 за штуку , и все ребра не имеют себе равных. Затем мы перечисляем кусочки в любом порядке. Для каждой перечислимой части P с краем E используйте схему индексирования для выбора потенциально подходящих пар пар/ребер. Проверьте точно подходящий предикат: не более одной части Q, с ребром F, точно совпадает. Co mbine области для P и Q вместе, чтобы сделать большую область. Повторение. Я думаю, что это решает загадку.
ли «картина нагромождение» такой же, как головоломки? – user49117
головоломки или скользящей плитки головоломки? –
это одна головоломка – Lazer