/* Global constraint element_greatereq in Picat. From Global Constraint Catalogue http://www.emn.fr/x-info/sdemasse/gccat/Celement_greatereq.html """ Constraint element_greatereq(ITEM,TABLE) .... Purpose ITEM.value is greater than or equal to one of the entries (i.e., the value attribute) of the table TABLE. Example ( , < index-1 value-6, index-2 value-9, index-3 value-2, index-4 value-9 > ) The element_greatereq constraint holds since ITEM[1].value=8 is greater than or equal to TABLE[ITEM[1].index].value=TABLE[1].value=6. """ This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import cp. main => go. go ?=> N = 4, ElementTable = new_list(N), ElementTable :: 1..9, Item :: 0..10, ElementTable = [6,9,2,9], Item #= 8, % Item #= 1, % false (no solution) element_greatereq(Item, ElementTable), Vars = ElementTable ++ [Item], solve(Vars), println(elementTable=ElementTable), println(item=Item), fail, nl. go => true. element_greatereq(Item, ElementTable) => sum([Item #>= ElementTable[I] : I in 1..ElementTable.len]) #>= 1.