sonstiges
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| sonstiges [2025/02/19 13:14] – [C#] lutz | sonstiges [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: | .wp-block-group: | ||
| Zeile 50: | Zeile 50: | ||
| } | } | ||
| } | } | ||
| - | </sxh> | + | </codeprism> |
| ==== SQL ==== | ==== SQL ==== | ||
| Zeile 65: | Zeile 65: | ||
| ==== Visual Basic ==== | ==== Visual Basic ==== | ||
| - | <sxh vb> | + | <codeprism lang=vb> |
| Case " | Case " | ||
| Filename = CreatingFilename(pRow(" | Filename = CreatingFilename(pRow(" | ||
| Zeile 85: | Zeile 85: | ||
| OutputFile.Export(pRow, | OutputFile.Export(pRow, | ||
| 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> |
| - | import sys | + | |
| - | import math | + | |
| - | from collections import defaultdict | + | |
| - | from AlgorithmX import AlgorithmXSolver | + | |
| - | class LatinSquare: | + | class ShikakuSolver: |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | grid = defaultdict(list) | + | self.grid = defaultdict(list) |
| + | self.solution = defaultdict(dict) | ||
| + | self.solutions = list() | ||
| + | self.requirements = list() | ||
| + | self.actions = defaultdict(list) | ||
| + | self.names = " | ||
| + | self.id = 0 | ||
| - | def __init__(self, | + | def add_row(self, |
| - | self.empty_value = all_possible_values[0] | + | |
| - | | + | |
| - | self.multiple_solutions = multiple_solutions_possible | + | self.requirements.append(('cell covered', |
| - | self.size = len(self.possible_values) | + | if value > 0: |
| - | # | + | self.values[(self.rows, i)] = value |
| + | | ||
| + | self.rows += 1 | ||
| + | if self.rows == self.height: | ||
| + | self.set_shapes() | ||
| - | def add_row(self, new_row): | + | def set_shapes(self): |
| - | | + | |
| - | row = list(new_row) | + | |
| - | for j in range(self.size): | + | c = p[1] |
| - | | + | n = self.values[(r, c)] |
| - | self.grid[(i, j)] = self.possible_values | + | i = 1 |
| - | | + | |
| - | self.grid[(i, j)] = [row[j]] | + | while i <= n: |
| + | | ||
| + | shapes.add((i, n // i)) | ||
| + | i += 1 | ||
| + | for shape in shapes: | ||
| + | h = shape[0] | ||
| + | w = shape[1] | ||
| + | self.place_shape(r, | ||
| - | def get_requirements(self): | + | def place_shape(self, rn, cn, w, h): |
| - | | + | |
| - | | + | c0 = cn - w if cn - w > 0 else 0 |
| - | [(' | + | |
| + | | ||
| + | cells = self.check_rectangle(r, | ||
| + | if r + h <= self.height and c + w <= self.width and cells != None: | ||
| + | | ||
| - | def get_actions(self): | + | def check_rectangle(self, r0, c0, w, h, rn, cn): |
| - | | + | |
| - | for row in range(self.size): | + | cells = list() |
| - | for col in range(self.size): | + | for r in range(r0, r0 + h): |
| - | | + | for c in range(c0, c0 + w): |
| - | action = ('place value', | + | |
| - | | + | if r == rn and c == cn: |
| - | ('value in row', row, val), | + | |
| - | (' | + | |
| - | return | + | return None |
| + | if value_included: | ||
| + | return cells | ||
| + | return | ||
| - | def get_solution(self): | + | def get_solutions(self): |
| - | solver = AlgorithmXSolver(self.get_requirements(), self.get_actions()) | + | solver = AlgorithmXSolver(self.requirements, self.actions) |
| - | result = defaultdict(dict) | + | |
| for solution in solver.solve(): | for solution in solver.solve(): | ||
| - | for action in solution: | + | |
| - | | + | self.id = 0 |
| - | | + | |
| - | | + | |
| - | break | + | |
| - | return | + | self.solutions.append(self.solution) |
| + | #break | ||
| + | print(solver.solution_count) | ||
| + | return | ||
| - | def get_solution_count(self): | + | def set_rectangle(self, action): |
| - | | + | |
| - | | + | |
| - | for solution | + | #print(self.names[i], |
| - | | + | for r in range(row, row + height): |
| - | | + | |
| + | # | ||
| + | self.solution[r][c] = value | ||
| - | def print_solution(self): | + | def print_grid(self): |
| - | | + | |
| - | for row in range(self.size): | + | for r in range(self.height): |
| - | | + | |
| + | for c in range(self.width): | ||
| + | output += "{:2d}".format(self.grid[r][c]) | ||
| + | print(output) | ||
| + | print(" | ||
| - | # Name all values, including | + | # Test the first simple grids: |
| - | # | + | for riddle in riddles: |
| - | all_possible_values | + | |
| - | n = 4 | + | for i in range(riddle[0][1]): |
| - | square = LatinSquare(all_possible_values[:n-9], True) | + | |
| - | + | | |
| - | #for i in range(len(all_possible_values) - 1): | + | # |
| - | # sudoku_solver.add_row(input()) | + | |
| - | square.add_row(" | + | |
| - | square.add_row(" | + | for r in range(riddle[0][1]): |
| - | square.add_row(" | + | row = "" |
| - | square.add_row(" | + | for c in range(riddle[0][0]): |
| - | + | row += solution[r][c] | |
| - | print("The number of possible solutions is {}".format(square.get_solution_count())) | + | print(row) |
| - | </sxh> | + | </codeprism> |
| ==== XML ==== | ==== XML ==== | ||
| - | <sxh xml> | + | <codeprism lang=xml> |
| <?xml version=" | <?xml version=" | ||
| < | < | ||
| Zeile 237: | Zeile 265: | ||
| </ | </ | ||
| </ | </ | ||
| - | </sxh> | + | </codeprism> |
| ==== SMTP ==== | ==== SMTP ==== | ||
| <code email> | <code email> | ||
sonstiges.1739970876.txt.gz · Zuletzt geändert: von lutz