Webseiten-Werkzeuge


sonstiges

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
sonstiges [2025/02/27 09:25] – [Python] lutzsonstiges [2026/04/29 09:49] (aktuell) – [SQL] lutz
Zeile 44: Zeile 44:
  
 ===== Syntaxhighlighting ===== ===== Syntaxhighlighting =====
-<sxh css>+<codeprism lang=css>
 @media (max-width: 664px) { @media (max-width: 664px) {
  .wp-block-group:not(.alignfull):not(.alignwide) > .wp-block-group__inner-container > * {  .wp-block-group:not(.alignfull):not(.alignwide) > .wp-block-group__inner-container > * {
Zeile 50: Zeile 50:
  }  }
 } }
-</sxh>+</codeprism>
  
 ==== SQL ==== ==== SQL ====
Zeile 65: Zeile 65:
  
 ==== Visual Basic ==== ==== Visual Basic ====
-<sxh vb>+<codeprism lang=vb>
 Case "PROSKURNIN", "CAMES", "INTERTABAK", "MACK", "SZZ", "BRUECK" Case "PROSKURNIN", "CAMES", "INTERTABAK", "MACK", "SZZ", "BRUECK"
     Filename = CreatingFilename(pRow("LocalFilePath").ToString, pRow("LocalFilePrefix").ToString, strTakeorderNumber, "CSV")     Filename = CreatingFilename(pRow("LocalFilePath").ToString, pRow("LocalFilePrefix").ToString, strTakeorderNumber, "CSV")
Zeile 85: Zeile 85:
         OutputFile.Export(pRow, strTakeorderNumber, OriginOfOrder, relation)         OutputFile.Export(pRow, strTakeorderNumber, OriginOfOrder, relation)
     End If     End If
-</sxh>+</codeprism>
  
 ==== C# ==== ==== C# ====
-<sxh csharp>+<codeprism lang=cs>
 if (posibleCustomerIds.Count < 1) if (posibleCustomerIds.Count < 1)
 { {
Zeile 100: Zeile 100:
     } ...     } ...
 } }
-</sxh>+</codeprism>
  
 ==== Python ==== ==== Python ====
-<sxh py>+<codeprism lang=py> 
 class ShikakuSolver: class ShikakuSolver:
     def __init__(self, dimension):     def __init__(self, dimension):
Zeile 110: Zeile 111:
         self.rows = 0         self.rows = 0
         self.values = defaultdict(int)         self.values = defaultdict(int)
-        self.rectangles = defaultdict(list) 
         self.grid = defaultdict(list)         self.grid = defaultdict(list)
 +        self.solution = defaultdict(dict)
 +        self.solutions = list()
 +        self.requirements = list()
 +        self.actions = defaultdict(list)
 +        self.names = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
 +        self.id = 0
  
     def add_row(self, row):     def add_row(self, row):
         for i, value in enumerate(row):         for i, value in enumerate(row):
             self.grid[self.rows].append(value)             self.grid[self.rows].append(value)
 +            self.requirements.append(('cell covered', self.rows, i))
             if value > 0:             if value > 0:
                 self.values[(self.rows, i)] = value                 self.values[(self.rows, i)] = value
 +                self.requirements.append(('value covered', self.rows, i))
         self.rows += 1         self.rows += 1
         if self.rows == self.height:         if self.rows == self.height:
Zeile 143: Zeile 151:
         for r in range(r0, rn + 1):         for r in range(r0, rn + 1):
             for c in range(c0, cn + 1):             for c in range(c0, cn + 1):
-                if r + h <= self.height and c + w <= self.width and self.check_rectangle(r, c, w, h, rn, cn)+                cells = self.check_rectangle(r, c, w, h, rn, cn) 
-                    self.rectangles[(rn, cn, self.grid[rn][cn])].append((r, c, w, h))+                if r + h <= self.height and c + w <= self.width and cells != None: 
 +                    self.actions[('set rectangle', r, c, w, h)] = [('value covered', rn, cn)*cells]
  
     def check_rectangle(self, r0, c0, w, h, rn, cn):     def check_rectangle(self, r0, c0, w, h, rn, cn):
         value_included = False         value_included = False
 +        cells = list()
         for r in range(r0, r0 + h):         for r in range(r0, r0 + h):
             for c in range(c0, c0 + w):             for c in range(c0, c0 + w):
 +                cells.append(('cell covered', r, c))
                 if r == rn and c == cn:                 if r == rn and c == cn:
                     value_included = True                     value_included = True
                 elif (r, c) in self.values.keys():                 elif (r, c) in self.values.keys():
-                    return False +                    return None 
-        return value_included+        if value_included
 +            return cells 
 +        return None 
 + 
 +    def get_solutions(self): 
 +        solver = AlgorithmXSolver(self.requirements, self.actions) 
 +        for solution in solver.solve(): 
 +            self.solution.clear() 
 +            self.id = 0 
 +            for i, action in enumerate(sorted(solution)): 
 +                self.set_rectangle(action) 
 +                self.id += 1 
 +            self.solutions.append(self.solution) 
 +            #break 
 +        print(solver.solution_count) 
 +        return self.solutions 
 + 
 +    def set_rectangle(self, action): 
 +        _, row, col, width, height = action 
 +        value = self.names[self.id] 
 +        #print(self.names[i], row, col, width, height) 
 +        for r in range(row, row + height): 
 +            for c in range(col, col + width): 
 +                #print("({}|{})={}".format(r, c, value)) 
 +                self.solution[r][c] = value
  
     def print_grid(self):     def print_grid(self):
Zeile 168: Zeile 203:
 for riddle in riddles: for riddle in riddles:
     solver = ShikakuSolver(riddle[0])     solver = ShikakuSolver(riddle[0])
-    #print("({},{})".format(solver.width, solver.height)) 
     for i in range(riddle[0][1]):     for i in range(riddle[0][1]):
         solver.add_row(riddle[i + 1])         solver.add_row(riddle[i + 1])
     solver.print_grid()     solver.print_grid()
-    print(solver.rectangles+    #print(solver.actions) 
-</sxh>+    solutions = solver.get_solutions().sort() 
 +    solution = solutions[0] 
 +    for r in range(riddle[0][1]): 
 +        row = "" 
 +        for c in range(riddle[0][0]): 
 +            row += solution[r][c] 
 +        print(row
 +</codeprism>
 ==== XML ==== ==== XML ====
-<sxh xml>+<codeprism lang=xml>
 <?xml version="1.0" encoding="iso-8859-15"?> <?xml version="1.0" encoding="iso-8859-15"?>
 <Auftrag> <Auftrag>
Zeile 224: Zeile 265:
   </Positionen>   </Positionen>
 </Auftrag> </Auftrag>
-</sxh>+</codeprism>
 ==== SMTP ==== ==== SMTP ====
 <code email> <code email>
sonstiges.1740648320.txt.gz · Zuletzt geändert: von lutz