I think that if this was cycled repeatedly, it would start to show a portrait of where the values should go. Before I continue work, though, I have a few issues that I'd like to discuss with more experienced Sudoku players and programmers:
1) Does anybody see any obvious problems with this idea? (read: does this have any chance of working?)
2) How should I calculate the probability of a certain value being in a certain cell? I was thinking something like 1/([# of candidates in that cell] * [# of possibilities for that value in the same box] * [# of possibilities...same row] * [# of possibilities...same column]). Remember that by using this system, nothing will be certain - the correct values will just get more and more likely, but never hit 100% (1.0) except for the givens.
3) Referring to the above example, should the probability of a 5 in r2c2 be reduced twice, since it is in both the same box and row? Or should it only be reduced once? My initial thought was that it should be reduced twice, but since r2c2 will cause r2c3's stats to do the same thing, I now think that it should only be reduced once.
4) How does the program know it's done? I was thinking once the "favored" values (the one with the highest percentage) in each cell didn't change after an iteration of this process.
Edit 1: clarified point of discussion #3
Edit 2: A better idea for calculating the probability of a number in a cell is:
- Code: Select all
1 - {(1 - (1/[#of candidates in that cell])) *
(1 - (1/[#of possibilities for that number in the same box])) *
(1 - (1/[#of possibilities for that number in the same row])) *
(1 - (1/[#of possibilities for that number in the same column]))}
Then, if it was an only candidate or naked single, it would get 100% (1.0) probability for that location.