У меня есть приложение, которое создает случайные изображения на основе ограничений. Различные цветные пиксели выбираются случайным образом и помещаются в сетку, которая удовлетворяет всем ограничениям. Например (упрощение), может существовать ограничение, указывающее, что синий или зеленый пиксель находится на (0, -1), а красные пиксели находятся на (-1, -1) и (-1, 0), а затем помещают белый пиксель запрещен. Эти координаты являются векторами из текущего местоположения размещения (т.е. Его окрестности).
Сейчас я храню ограничения в массиве и прокручиваю их, проверяя, применимо ли каждое из них или нет. Я должен сделать это для каждого пикселя, который я размещаю в сетке. Таким образом, производительность страдает по мере добавления дополнительных ограничений. Кроме того, возможно, что два ограничения конфликтуют, но проверить это непросто.
Я думаю, что структура данных типа графа (tree?) может быть способом хранения всех ограничений, чтобы я мог быстро определить из окрестности пикселя, какие (если есть) ограничения применяются. Но я не могу понять, как создать такую структуру, учитывая, что одна координата может содержать несколько цветов и как привязать набор координат/цветов к набору запрещенных цветов пикселей. Любые идеи?