Clingo: сравнивать строковые литералы по порядку (индексу)? - PullRequest
0 голосов
/ 17 февраля 2019

Я определил цветовую палитру под названием tableau10 в Clingo :

tableau10(blue;orange;red;teal;green;yellow;purple;pink;brown;gray).

Есть ли способ сравнить цвета в порядке их появленияв моем определении цвета?(например, blue = 0, orange = 1, red = 2, ...)

Моя цель - иметь возможность требовать такие вещи, как blue < orange, blue < gray ...

1 Ответ

0 голосов
/ 17 февраля 2019

Предикат tableau10 неупорядочен.Для таких сравнений вы должны будете так или иначе кодировать порядок.Например, вы можете присвоить номера цветам value(blue, 1). value(orange, 2). ... и сравнить соответствующие числа при необходимости, или вы можете написать lessthan(blue, orange). lessthan(orange, red). ... lessthan(brown,gray)., а также добавить правило транзитивности lessthan(A, C) :- lessthan(A, B), lessthan(B, C).

...