diff options
Diffstat (limited to 'food_delivery/generate-food.py')
-rwxr-xr-x | food_delivery/generate-food.py | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/food_delivery/generate-food.py b/food_delivery/generate-food.py index dc87c03..192131b 100755 --- a/food_delivery/generate-food.py +++ b/food_delivery/generate-food.py @@ -118,17 +118,22 @@ for j in range(1, m + 1): preds += ["(or %s)" % "\n".join(altpreds)] if is_b: - # If stock is higher or equal to initial state, then we found a loop. + # If any stock is higher or equal to another state in the same location, + # then we found a loop. stuff = [] - for j in range(1, m + 1): - jprev = j - 1 - highers = " ".join([ - "(>= s{i}_{j} s{i}_0)".format(i=i, j=j) - for i in range(1, len(states)) - ]) - stuff += fillin([ - "(and {highers})" - ], vars()) + literals += ["k0", "k1"] + for k in range(1, m + 1): + for j in range(1, m + 1): + if k >= j: + continue + jprev = j - 1 + highers = " ".join([ + "(>= s{i}_{j} s{i}_{k})".format(i=i, j=j, k=k) + for i in range(1, len(states)) + ]) + stuff += fillin([ + "(and {highers} (= l{j} l{k}) (= k0 {j}) (= k1 {k}))" + ], vars()) preds += ["(or %s)" % " ".join(stuff)] |