| 104 | } |
| 105 | |
| 106 | SymmetryHandle values_reflect(int lower, int upper) { |
| 107 | int n = (upper-lower+1)/2; |
| 108 | IntArgs a(n*2); |
| 109 | int i = lower; |
| 110 | int j = upper; |
| 111 | int k = 0; |
| 112 | while (i < j) { |
| 113 | a[k] = j; |
| 114 | a[n+k] = i; |
| 115 | i++; |
| 116 | j--; |
| 117 | k++; |
| 118 | } |
| 119 | return ValueSequenceSymmetry(a,n); |
| 120 | } |
| 121 | SymmetryHandle values_reflect(const IntVar& x) { |
| 122 | return values_reflect(x.min(), x.max()); |
| 123 | } |