   Can anyone help me solve this Sudoku?
  I received this Sudoku url from a friend. He says he's solved it up to here, but he's stuck:http://www.freesudokuhost.com/showsudokuhosting.php?id=20051224213001997 I'm unable to move ahead either. I asked my friends, but no one is able to help.I'm fairly good with Sudokus, and so is my friend who sent this to me. All I need is just the next step. I can (hopefully) solve it from there.Thanks,Elizabeth Daniel.   
239 548 671471 269 853685 371 429516 783 942892 154 367347 692 185164 925 738723 816 594958 437 216Illco   ;  Please use the "help wanted" templ... never mind [grin]   ;  Moved to the lounge.   ;  Wow, apparently some of these puzzles actually require a guess :/# This is nasty stuff that should be cleaned up. # It tries to solve the puzzle "as it is entered", but the entry process has# a weird interface that then gets wrapped in a hacked way.class sudoku:  def __init__(self):    self.possibilities = [[True] * 9 for x in range(81)]    self.unknown = [True] * 81    self.current = 0  def __call__(self, value = 0):    if value:  self.possibilities[self.current] = [False] * 9 self.possibilities[self.current][value - 1] = True self.reduce(self.current)    self.current += 1    return self  def reduce(self, place):    value = self.value(place)    if not value: return    self.unknown[place] = False    for neighbour in self.connected(place): self.possibilities[neighbour][value - 1] = False self.reduce(neighbour)  def value(self, place):    if self.possibilities[place].count(True) != 1: return 0    return self.possibilities[place].index(True) + 1  def connected(self, place):    return [x for x in range(81) if  x != place and self.unknown[x] and  (x / 9 == place / 9 or  x % 9 == place % 9 or  ((x / 9) / 3 == (place / 9) / 3 and (x % 9) / 3 == (place % 9) / 3))]  def __str__(self):    return ''.join(['%d%s' % (self.value(x),["", "", "", "", "", "", "", "", "\n"][x % 9])for x in range(81)])  def __repr__(self): return str(self)def main(data):  x = sudoku()  for char in data:    if char in "0123456789": x(int(char))    elif char == " ": x()  print x>>> main('   5   71 71 69853  5 7142  1 78  4   2154369218  649 57   23 1 59  5  ')000500071071069853005071420010780040002154360000092180064905700023010590050000000 # Hmm, nothing cancels right away o_O :( # Let's make a guess about the top-right square...>>>>>> main('   5  971 71 69853  5 7142  1 78  4   2154369218  649 57   23 1 59  5  ')000500971071069853005071426010780240002154360000092180064905700023010590050000600 # Hmm, I think that's wrong...>>> main('   5  671 71 69853  5 7142  1 78  4   2154369218  649 57   23 1 59  5  ')239548671471269853685371429516783942892154367347692185164925738723816594958437216 # boom.;  Well, your solver doesn't contain all the logic necessary to solve a puzzle without guessing. And the initial board isn't "well formed" anyways - it doesn't follow the 1986 Nikoli rules for Sudoku board generation.edit: nevermind about the well formed part, didn't see the part where it said this was already partially solved.   ;  Wow! These sudoku's are actually great fun. Never tried a sudoku before, but I solved this one in no time. Guess that's what staying off the weed will do to ya[grin]   ;Quote:Original post by SiCraneWell, your solver doesn't contain all the logic necessary to solve a puzzle without guessing.??Each time something is added, I call 'reduce', which marks the row, column and square as not possibly having the added value. And if any square's value is deduced as a result (because only one value remains), I apply that information, recursively. What more logic is required?Quote:And the initial board isn't "well formed" anyways - it doesn't follow the 1986 Nikoli rules for Sudoku board generation.edit: nevermind about the well formed part, didn't see the part where it said this was already partially solved.Good heavens, it's been around THAT long and it's only now popular?   ;  As far as I can tell, your solver won't correctly deduce X is this example:1  |   | |   |   |   |---+---+---  1|   |   |   |   |   |---+---+---   |1  | X |   |   |   | 1It should be 1, but the way your solver's logic works it doesn't seem like it can fine that out. There are other tricks too. For example, if two cells in the same row only have two possiblities, say X & Y, then none of the other cells in that row can be X or Y so you can eliminate the possibilities from those cells.And sudoku has been relatively popular in Japan for a while. It's only recently that its become popular in western nations.   ;This was cross posted to LtU.   