MCPcopy Index your code
hub / github.com/TheAlgorithms/Python / eliminate

Function eliminate

data_structures/arrays/sudoku_solver.py:98–121  ·  view source on GitHub ↗

Eliminate d from values[s]; propagate when values or places <= 2. Return values, except return False if a contradiction is detected.

(values, s, d)

Source from the content-addressed store, hash-verified

96
97
98def eliminate(values, s, d):
99 """
100 Eliminate d from values[s]; propagate when values or places <= 2.
101 Return values, except return False if a contradiction is detected.
102 """
103 if d not in values[s]:
104 return values ## Already eliminated
105 values[s] = values[s].replace(d, "")
106 ## (1) If a square s is reduced to one value d2, then eliminate d2 from the peers.
107 if len(values[s]) == 0:
108 return False ## Contradiction: removed last value
109 elif len(values[s]) == 1:
110 d2 = values[s]
111 if not all(eliminate(values, s2, d2) for s2 in peers[s]):
112 return False
113 ## (2) If a unit u is reduced to only one place for a value d, then put it there.
114 for u in units[s]:
115 dplaces = [s for s in u if d in values[s]]
116 if len(dplaces) == 0:
117 return False ## Contradiction: no place for this value
118 # d can only be in one place in unit; assign it there
119 elif len(dplaces) == 1 and not assign(values, dplaces[0], d):
120 return False
121 return values
122
123
124def display(values):

Callers 1

assignFunction · 0.85

Calls 1

assignFunction · 0.85

Tested by

no test coverage detected