--- reverse1.py	2025-12-26 21:57:07.468454794 +0200
+++ reverse2.py	2025-12-20 23:10:11.279336986 +0200
@@ -1,12 +1,37 @@
 #!/usr/bin/python3
 
-import os
-import GoL_SAT_utils, SAT_lib
+from typing import List
+import os, SAT_lib, GoL_SAT_utils, my_utils
 
+"""
 final_state=[
 " * ",
 "* *",
 " * "]
+"""
+
+"""
+final_state=[
+"      ",
+"      ",
+" **** ",
+"      ",
+"      "]
+"""
+
+#"""
+final_state=[
+"             ",
+"   *     *   ",
+"    *   *    ",
+"   *******   ",
+"  ** *** **  ",
+" *********** ",
+" * ******* * ",
+" * *     * * ",
+"    ** **    ",
+"             "]
+#"""
 
 H=len(final_state) # HEIGHT
 W=len(final_state[0]) # WIDTH
@@ -24,7 +49,7 @@
             v=GoL_SAT_utils.coords_to_var(grid, VAR_FALSE, r, c, H, W)
             n=GoL_SAT_utils.get_neighbours(grid, VAR_FALSE, r, c, H, W)
             if final_state[r][c]=="*":
-                s.add_clauses (GoL_SAT_utils.cell_is_true(v, n))
+                s.add_clauses (GoL_SAT_utils.cell_is_true(v,n))
             else:
                 s.add_clauses (GoL_SAT_utils.cell_is_false(v, n))
 
@@ -41,7 +66,8 @@
             n=GoL_SAT_utils.get_neighbours(grid, VAR_FALSE, r, c, H, W)
             s.add_clauses (GoL_SAT_utils.cell_is_false(v, n))
 
-    assert s.solve()
+    if s.solve()==False:
+        return None
 
     tmp=GoL_SAT_utils.SAT_solution_to_grid(grid, VAR_FALSE, s.solution, H, W)
 
@@ -51,8 +77,22 @@
     return tmp
 
 while True:
-    try_again()
-    if s.fetch_next_solution()==False:
+    solution=try_again()
+    if solution==None:
         break
-    print ("")
 
+    c=GoL_SAT_utils.grid_to_clause(solution, grid, VAR_FALSE, H, W)
+    s.add_clause(GoL_SAT_utils.negate_clause(c))
+    c=GoL_SAT_utils.grid_to_clause(my_utils.reflect_vertically(solution), grid, VAR_FALSE, H, W)
+    s.add_clause(GoL_SAT_utils.negate_clause(c))
+    c=GoL_SAT_utils.grid_to_clause(my_utils.reflect_horizontally(solution), grid, VAR_FALSE, H, W)
+    s.add_clause(GoL_SAT_utils.negate_clause(c))
+    # is this square?
+    if W==H:
+        c=GoL_SAT_utils.grid_to_clause(my_utils.rotate_rect_array(solution,1), grid, VAR_FALSE, H, W)
+        s.add_clause(GoL_SAT_utils.negate_clause(c))
+        c=GoL_SAT_utils.grid_to_clause(my_utils.rotate_rect_array(solution,2), grid, VAR_FALSE, H, W)
+        s.add_clause(GoL_SAT_utils.negate_clause(c))
+        c=GoL_SAT_utils.grid_to_clause(my_utils.rotate_rect_array(solution,3), grid, VAR_FALSE, H, W)
+        s.add_clause(GoL_SAT_utils.negate_clause(c))
+    print ("")
