Переглянути джерело

Add heuristic column height to fragmentation score

Taddeus Kroes 5 роки тому
батько
коміт
5efb10b4e5
1 змінених файлів з 3 додано та 1 видалено
  1. 3 1
      strategy.py

+ 3 - 1
strategy.py

@@ -201,6 +201,7 @@ class State:
         """
         Minimize the sum of dist(i,j) between all blocks i,j of the same color.
         Magnify vertical distances to avoid column stacking.
+        Add the vertical components of i and j to prioritize lower columns.
         """
         def dist(i, j):
             yi, xi = divmod(i, COLUMNS)
@@ -211,7 +212,8 @@ class State:
             if self.groups[i] == self.groups[j]:
                 return abs(yj - yi)
 
-            return abs(xj - xi) + abs(yj - yi) * 2 - 1
+            return abs(xj - xi) + abs(yj - yi) * 2 - 1 + \
+                   (self.nrows - yi) + (self.nrows - yj)
 
         colors = {}
         for i, block in enumerate(self.blocks):