Team project: C or C++ Explainer-like rating program

Programs which generate, solve, and analyze Sudoku puzzles

Re: Team project: C or C++ Explainer-like rating program

Postby ronk » Sat Oct 23, 2010 9:34 am

champagne wrote:In my clone solution, cell r9c2 does not play any role.
The hidden locked set is well defined with the cell r9c1 and the digits 6;8.

Hmm, I apparently mis-spoke earlier ... and need to edit a post somewhere. Based on this description of this move, SE does indeed use hidden sets with type 3 URs. I agree it should probably be a hidden pair rather that a hidden triple. SE does use hidden pairs in other puzzles.
ronk
2012 Supporter
 
Posts: 4764
Joined: 02 November 2005
Location: Southeastern USA

Re: Team project: C or C++ Explainer-like rating program

Postby lksudoku » Sat Oct 23, 2010 9:54 am

champagne wrote:1) I understand that what you call the "floor digits" are the common digits of the UR pattern.

Yes

champagne wrote:here an example of a "sophisticated" hidden triplet rated 4.6
That one is seen by my "clone", but not properly rated.

..1...2..
...3.2...
4...1...3
.6.7.8.5.
..4...9..
.8.6.4.2.
9...6...7
...8.7...
..5...1..

Code: Select all
A     B    C    |D   E    F   |G   H    I   
3568  359  1    |4   78   569 |2   6789 5689
568   59   678  |3   78   2   |4   1    5689
4     259  2678 |59  1    569 |568 6789 3   
--------------------------------------------
1     6    29   |7   29   8   |3   5    4   
2357  2357 4    |125 235  135 |9   68   68   
35    8    39   |6   359  4   |7   2    1   
--------------------------------------------
9     234  238  |125 6    135 |58  348  7   
236   1    236  |8   2345 7   |56  3469 2569
23678 2347 5    |29  234  39  |1   3468 268 


UR

r5c8 68
r5c9 68
r9c9 268
r9c8 3468



in row 9 digits 678 are only

in the UR cells
in cells r9c12

this form a "hidden triplet"
SE clears 23 r9c1 and 234 r9c2

Here after the comment block (I hope without typing error)

Unique rectangle type 3 (with Hidden triplet)
The cells H5;I5;I9;H9 form a Unique rectangle with the values 6 and 8.
There are exactly two ways of placing the values 6 and 8 in the cells of the Unique rectangle, forming two possible configurations.
In both configurations, each row, column or block touched by the Unique rectangle contains each of the two values 6 and 8 exactly once.
As a result, if one of these two configurations were part of the solution, it could then be replaced by the other one to get a second valid solution.

Because a valid sudoku cannot have more than one solution, none of the two configurations of the Unique rectangle can be valid.
This implies that either I9 or H9 contains one of the values 2,3 or 4.
It follows that either I9 or H9 forms a Hidden triplet with A9 and B9 on the values 6,7 and 8 in the row.

Other potential values can therefore be removed from A9 and B9

====================================

As far as priorities are concerned, SE gives the priority to the naked pair against the hidden locked set.
I have to investigate more to understand other priorities


champagne

My description of UR hidden set was not correct; however, I think SE has a bug in it which I now saw

When searching for a UR hidden set, there is a creation of combinations of potentials for the set, the combination is created by permuting a (degree-2) set of potentials, and then traverse these permutations and add the 2 floor potentials to each permutation

For a UR hidden pair, the groups of additional permutations is empty (2-2=0 set of potentials), and therefore no hidden pair is searched

If I am correct about this, that means that a UR hidden pair will never be found

I may try to generate another SE version which fixes this bug somtime later on
lksudoku
 
Posts: 90
Joined: 06 October 2010

Re: Team project: C or C++ Explainer-like rating program

Postby champagne » Sat Oct 23, 2010 10:05 am

lksudoku wrote:My description of UR hidden set was not correct; however, I think SE has a bug in it which I now saw

When searching for a UR hidden set, there is a creation of combinations of potentials for the set, the combination is created by permuting a (degree-2) set of potentials, and then traverse these permutations and add the 2 floor potentials to each permutation

For a UR hidden pair, the groups of additional permutations is empty (0 set of potentials), and therefore no hidden pair is searched

If I am correct about this, that means that a UR hidden pair will never be found

I may try to generate another SE version which fixes this bug somtime later on


this is not granted, but as far as I remind, the first time i have seen that pattern was with a "hidden pair" which means the "external pair" has extra digits as well. But both have the same rating, so it can be accepted.

Ronk seems to confirm;

If this is true, the anomaly here is that it works with r9c1 alone.

champagne
champagne
2017 Supporter
 
Posts: 7455
Joined: 02 August 2007
Location: France Brittany

Re: Team project: C or C++ Explainer-like rating program

Postby lksudoku » Sat Oct 23, 2010 11:15 am

champagne wrote:If this is true, the anomaly here is that it works with r9c1 alone.champagne

It does not work with r9c1 alone, it works with r9c1 and r9c2, combined

Here the hidden triplet set is composed of the potentials 7,6,8,
The 7 is taken from permutation of 1 digit that is not in floor, and the 6,8 are added from the floor

As your second example shows, there is also a UR hidden pair which, again, is not found

Take the hidden pair set 6,8
It can be included only in r9c1, r9c8 and r9c9
it cannot be that both r9c8 and r9c9 contains the set 6,8 so there is a hidden pair with r9c1 and (merged r9c8, r9c9)

However, as I suspected, this hidden pair is not found because the combination 6,8 is not a combination of (premutation+6,8)

A UR hidden pair is composed of 2 digits
A UR hidden triplet is composed of 3 digits
lksudoku
 
Posts: 90
Joined: 06 October 2010

Re: Team project: C or C++ Explainer-like rating program

Postby ronk » Sat Oct 23, 2010 11:43 am

lksudoku wrote:My description of UR hidden set was not correct; however, I think SE has a bug in it which I now saw

When searching for a UR hidden set, there is a creation of combinations of potentials for the set, the combination is created by permuting a (degree-2) set of potentials, and then traverse these permutations and add the 2 floor potentials to each permutation

For a UR hidden pair, the groups of additional permutations is empty (2-2=0 set of potentials), and therefore no hidden pair is searched

If I am correct about this, that means that a UR hidden pair will never be found

It appears you're talking about Explainer rather than champagne's clone, so here's a counter-example.

Code: Select all
7....81694...7....3..1.....8..9.75...4.....9...96.4..8.....3..1....2...56835....2


____Image

lksudoku wrote:"I may try to generate another SE version which fixes this bug somtime later on

Rather than bug by bug, I recommend posting a fix for several bugs at a time.

BTW UR "floor" and "ceiling" are not generally used on this forum. Sudoku Explainer uses a lot of terminology not used on this forum, and I fear this project will pollute this forum's terminology. Explainer's "potential" is one of these.

To help reduce this effect, I ask everyone to please make it clear when Explainer is being quoted ... and when Explainer is the source of your terminology.
ronk
2012 Supporter
 
Posts: 4764
Joined: 02 November 2005
Location: Southeastern USA

Re: Team project: C or C++ Explainer-like rating program

Postby lksudoku » Sat Oct 23, 2010 12:25 pm

ronk wrote:It appears you're talking about Explainer rather than champagne's clone, so here's a counter-example.

Code: Select all
7....81694...7....3..1.....8..9.75...4.....9...96.4..8.....3..1....2...56835....2


Well I checked the code again, and if there is a zero [SE code:permutation], it will also be traversed

However I suspect of the following SE bug

A UR Hidden Set will only be found if the number of digits in the UR that are not common to all UR cells [SE code:external digits] is at least the degree of the UR hidden set

So in the example here there are two [SE code:external digits, 4,7] and a hidden set of size 2 can be found

In the above examples, the [SE code:external digits were 2,3,4 and before 4,5,6] hence only UR hidden sets of degree 3 and above (triplet or quad hidden sets) were searched
lksudoku
 
Posts: 90
Joined: 06 October 2010

Re: Team project: C or C++ Explainer-like rating program

Postby lksudoku » Sat Oct 23, 2010 1:15 pm

I have fixed the UR hidden pair sometimes not found bug, it turned out to be just like I described above (with the [SE code:hidden set degree cannot be smaller than external digits set size])

ronk wrote:
lksudoku wrote:"I may try to generate another SE version which fixes this bug somtime later on

Rather than bug by bug, I recommend posting a fix for several bugs at a time.

Whoever is interested in the version with this bug fix (along with the previous bug fixes) should either PM me, or request from me to post it
lksudoku
 
Posts: 90
Joined: 06 October 2010

Re: Team project: C or C++ Explainer-like rating program

Postby champagne » Sat Oct 23, 2010 1:32 pm

lksudoku wrote:Whoever is interested in the version with this bug fix (along with the previous bug fixes) should either PM me, or request from me to post it



As I told earlier, I see 2 reason to get it on my side,

1)the first one is if the pattern game referee turns to that new version, but this is a decision that can only be taken by the team controlling the game,

2) in due time, to cross check programs, but I am far from having a "clone" program in that situation, so I'll come later with surely other bugs fixed;


champagne
champagne
2017 Supporter
 
Posts: 7455
Joined: 02 August 2007
Location: France Brittany

Re: Team project: C or C++ Explainer-like rating program

Postby PIsaacson » Sun Oct 24, 2010 10:07 am

Added code for detecting and processing hidden locked sets generated by UR type 3 rectangles and loops. But, I have a question about BUG Type 3 processing. Looking at the source code, it appears that there is no provision in SE for hidden locked sets, just naked sets generated by the LBM digits. Since the cells involved in generating the naked set don't need to share the same 2 values in the non-LBM candidates, I'm not sure that a hidden set makes any sense, unless it's on the LBM candidates??? Am I asking this correctly??? I can't find any examples of BUG Type 3 hidden sets anywhere and even the BUG Type 3 naked set appears to be really rare anyways. I'm just trying to ensure that all Type 3 patterns are handled in a similar fashion, if feasible.

I've pulled all the BUG examples from the SE FAQ page for testing:
Code: Select all
54.6....3..6.147.5.8...9.6..18.....6.5.....4.4.....89..2.1...3.6.943.1..1....6.29
9......45..2...6.9..46.91..6...2..17.....328....5.7..6.5..8....2.8...7...1.7.....
..71.8.....5.3......24.75837.6...3.4.2.....7.5.9...8.24735.69......2.4.....7.91..
.5...4.6....89.5.77.9..6.4...4..96.1.......5...32...8.2..4.57...3......8..1...2..
...5.6.4..31...............6.42.........7.3..1.........8.....52....14.........7..
4..1.2..398..4..12....6......5...3.....7.3.....24.17..2...3...9..19.72..3.......6
6....9....2..3..6..7..1.....8..2.3.4.......9..3..6..1.1....4.5.8....36.2..25..9.1
.91...46..4.126.5...64.71..9.......25.3.6.9.4..........8..3..9.6...4...8...5.2...
3...4...1.5.1.7.2.1.7...9.5...8.3.....34925......1.....4.689.3...83.47...........
..53..4....3..2.69.7..9..2..8.......3..1.7..4.......3..9..1..5.75.6..3....2..96..
..25.38......8....8..6.2..16.48.17.9.3.....5.7.59.46.21..3.8..7....9......71.69..
8...5.1.3.6.1.......3..86.9.9..1.8..2..8.3..6..6.2..7.6.87..2.......1.9.9.4.8...7
.4......2...46..8.9..1.3.....3..5.4..28.1.53..6.3..9.....6.8..4.3..91...8......7.
..135.....5.......9.6..1......8..7..248.3...9.....4..56.9.8.5.2.1..9..7...3.4.8..
.19.8......21..6.9.345..712....7.12.7..2.1..3.28.5....947..523.2.5..74......2.56.
....7....1.58...7..3.6.4........84.7..69..2....9.41....5..........1..53.7....29.8
4.....178...7.....81.5.9.2.6.41.53.....36......5.........91...2..........63.289..
8...13....35.6......1..8.2....7.5..42..19..8........6...95..3..7.2...91..........
97....15..84.12.7.3..9......9.8....36..4.35......7.6.17....54.......8....4.......
76..123....2..8.1..3.4..2.......6..38.3.2.9.51..5.......7..1.9..1.7..8....923..71

Grep'ing my output log for the bug eliminations gives:
Code: Select all
 34)  5.7 r3c5 <> 7    bug type 2 r1c5.<28+7> r3c4.<35+7> r3c5.<57+> r6c5.<25+7>
 37)  5.6 r1c5 <> 28   bug type 1 r1c5.<28+7>
 37)  5.7 r2c8 <> 3    bug type 2 r2c4.<48+3> r2c5.<57+3> r2c8.<37+> r3c8.<27+3>
 38)  5.7 r3c5 <> 3    bug type 2 r2c4.<48+3> r2c5.<57+3> r2c8.<37+> r3c5.<37+> r3c8.<27+3>
 41)  5.6 r2c4 <> 48   bug type 1 r2c4.<48+3>
 30)  5.7 r1c2 <> 6    bug type 2 r1c2.<46+> r1c8.<49+6> r2c2.<48+6> r8c2.<59+6>
 33)  5.6 r8c2 <> 59   bug type 1 r8c2.<59+6>
 33)  5.7 r1c4 <> 1    bug type 2 r1c1.<38+1> r1c4.<17+> r1c5.<37+1> r8c4.<79+1>
 36)  5.6 r1c1 <> 38   bug type 1 r1c1.<38+1>
 47)  5.7 r3c8 <> 9    bug type 2 r3c8.<39+> r3c9.<35+9> r6c8.<27+9> r8c8.<38+9>
 50)  5.6 r6c8 <> 27   bug type 1 r6c8.<27+9>
 40)  5.8 r6c8 <> 9    bug type 3 r4c8.<24+9> r9c8.<57+8> + ls[2] r1c8.<89>
 41)  5.8 r7c8 <> 8    bug type 3 r4c8.<24+9> r9c8.<57+8> + ls[2] r1c8.<89>
 35)  5.8 r1c7 <> 7    bug type 3 r2c7.<14+7> r6c7.<25+8> + ls[2] r7c7.<78>
 36)  5.8 r5c7 <> 8    bug type 3 r2c7.<14+7> r6c7.<25+8> + ls[2] r7c7.<78>
 39)  5.9 r6c2 <> 6    bug type 3 r6c3.<28+4> r6c7.<35+6> + ls[3] r6c1 r6c9.<146>
 40)  5.9 r6c6 <> 4    bug type 3 r6c3.<28+4> r6c7.<35+6> + ls[3] r6c1 r6c9.<146>
 37)  5.8 r9c4 <> 5    bug type 3 r9c5.<27+5> r9c9.<49+8> + ls[2] r9c8.<58>
 38)  5.8 r9c7 <> 8    bug type 3 r9c5.<27+5> r9c9.<49+8> + ls[2] r9c8.<58>
 34)  5.8 r6c1 <> 2    bug type 3 r6c3.<17+4> r6c4.<89+2> r6c6.<68+4> + ls[2] r6c5.<24>
 35)  5.8 r6c2 <> 4    bug type 3 r6c3.<17+4> r6c4.<89+2> r6c6.<68+4> + ls[2] r6c5.<24>
 34)  5.7 r8c3 <> 8    bug type 4 r8c3.<38+6> r8c7.<13+4>
 35)  5.7 r8c7 <> 1    bug type 4 r8c3.<38+6> r8c7.<13+4>
 47)  5.7 r6c4 <> 9    bug type 4 r6c4.<49+5> r6c6.<45+9>
 48)  5.7 r6c6 <> 5    bug type 4 r6c4.<49+5> r6c6.<45+9>
 55)  5.7 r1c7 <> 3    bug type 4 r1c7.<37+1> r2c7.<17+3>
 56)  5.7 r2c7 <> 1    bug type 4 r1c7.<37+1> r2c7.<17+3>
 33)  5.7 r1c7 <> 4    bug type 4 r1c7.<49+26> r2c7.<19+34>
 34)  5.7 r2c7 <> 1    bug type 4 r1c7.<49+26> r2c7.<19+34>
 23)  5.7 r6c4 <> 4    bug type 4 r6c4.<34+6> r6c6.<36+4>
 24)  5.7 r6c6 <> 6    bug type 4 r6c4.<34+6> r6c6.<36+4>
 44)  5.7 r8c1 <> 6    bug type 4 r8c1.<69+2> r8c2.<29+46>
 45)  5.7 r8c2 <> 2    bug type 4 r8c1.<69+2> r8c2.<29+46>
 50)  5.6 r8c2 <> 69   bug type 1 r8c2.<69+4>
 40)  5.7 r2c9 <> 9    bug type 4 r2c9.<59+4> r5c9.<45+79>
 41)  5.7 r5c9 <> 4    bug type 4 r2c9.<59+4> r5c9.<45+79>
 44)  5.6 r5c9 <> 59   bug type 1 r5c9.<59+7>
 40)  5.7 r1c7 <> 5    bug type 4 r1c7.<56+47> r1c9.<67+5>
 41)  5.7 r1c9 <> 7    bug type 4 r1c7.<56+47> r1c9.<67+5>
 44)  5.6 r1c7 <> 67   bug type 1 r1c7.<67+4>
 46)  5.7 r7c8 <> 8    bug type 4 r7c8.<18+36> r9c8.<13+8>
 47)  5.7 r9c8 <> 3    bug type 4 r7c8.<18+36> r9c8.<13+8>
 52)  5.6 r7c8 <> 13   bug type 1 r7c8.<13+6>
 32)  5.7 r4c2 <> 2    bug type 4 r4c2.<27+59> r4c5.<79+4>
 33)  5.7 r4c5 <> 9    bug type 4 r4c2.<27+59> r4c5.<79+4>
 38)  5.6 r4c2 <> 79   bug type 1 r4c2.<79+5>

My final scores exactly match SE - but I don't have any hidden set detection (and neither does SE):
Code: Select all
54.6....3..6.147.5.8...9.6..18.....6.5.....4.4.....89..2.1...3.6.943.1..1....6.29 1 5.7 1.2 1.2 0.4031ms
9......45..2...6.9..46.91..6...2..17.....328....5.7..6.5..8....2.8...7...1.7..... 2 5.7 1.2 1.2 0.3892ms
..71.8.....5.3......24.75837.6...3.4.2.....7.5.9...8.24735.69......2.4.....7.91.. 3 5.7 1.2 1.2 0.4691ms
.5...4.6....89.5.77.9..6.4...4..96.1.......5...32...8.2..4.57...3......8..1...2.. 4 5.7 1.2 1.2 0.4378ms
...5.6.4..31...............6.42.........7.3..1.........8.....52....14.........7.. 5 5.7 1.2 1.2 0.2561ms
4..1.2..398..4..12....6......5...3.....7.3.....24.17..2...3...9..19.72..3.......6 6 5.8 1.2 1.2 0.3622ms
6....9....2..3..6..7..1.....8..2.3.4.......9..3..6..1.1....4.5.8....36.2..25..9.1 7 5.8 1.2 1.2 0.1678ms
.91...46..4.126.5...64.71..9.......25.3.6.9.4..........8..3..9.6...4...8...5.2... 8 5.9 1.2 1.2 0.2422ms
3...4...1.5.1.7.2.1.7...9.5...8.3.....34925......1.....4.689.3...83.47........... 9 5.8 1.2 1.2 0.2762ms
..53..4....3..2.69.7..9..2..8.......3..1.7..4.......3..9..1..5.75.6..3....2..96.. 10 5.8 1.2 1.2 0.4100ms
..25.38......8....8..6.2..16.48.17.9.3.....5.7.59.46.21..3.8..7....9......71.69.. 11 5.7 1.2 1.2 0.3433ms
8...5.1.3.6.1.......3..86.9.9..1.8..2..8.3..6..6.2..7.6.87..2.......1.9.9.4.8...7 12 5.7 1.2 1.2 0.5049ms
.4......2...46..8.9..1.3.....3..5.4..28.1.53..6.3..9.....6.8..4.3..91...8......7. 13 5.7 1.2 1.2 0.4494ms
..135.....5.......9.6..1......8..7..248.3...9.....4..56.9.8.5.2.1..9..7...3.4.8.. 14 5.7 1.2 1.2 0.4465ms
.19.8......21..6.9.345..712....7.12.7..2.1..3.28.5....947..523.2.5..74......2.56. 15 5.7 1.2 1.2 0.1499ms
....7....1.58...7..3.6.4........84.7..69..2....9.41....5..........1..53.7....29.8 16 5.7 1.2 1.2 0.4604ms
4.....178...7.....81.5.9.2.6.41.53.....36......5.........91...2..........63.289.. 17 5.7 1.2 1.2 0.3356ms
8...13....35.6......1..8.2....7.5..42..19..8........6...95..3..7.2...91.......... 18 5.7 1.2 1.2 0.5819ms
97....15..84.12.7.3..9......9.8....36..4.35......7.6.17....54.......8....4....... 19 5.7 1.2 1.2 0.5793ms
76..123....2..8.1..3.4..2.......6..38.3.2.9.51..5.......7..1.9..1.7..8....923..71 20 5.7 1.2 1.2 0.3192ms

An example BUG grid position from one of the above triples - I can't see any way to form a hidden set even though for every normal naked locked set, there's always an inverse hidden set. I guess that rule doesn't apply here???
Code: Select all
bug grid type 3
 9         2         5        |3         6         1        |4         7         8
 14        14        3        |78        78        2        |5         6         9
 68        7         68       |4         9         5        |1         2         3
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 25        8         47       |29        3         46       |79        1         56
 3         6         9        |1         5         7        |2         8         4
 25        14        17+4     |89+2      24        68+4     |79        3         56
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 46        9         46       |27        1         3        |8         5         27
 7         5         18       |6         24        48       |3         9         12
 18        3         2        |5         78        9        |6         4         17

 34)  5.8 r6c1 <> 2    bug type 3 r6c3.<17+4> r6c4.<89+2> r6c6.<68+4> + ls[2] r6c5.<24>
 35)  5.8 r6c2 <> 4    bug type 3 r6c3.<17+4> r6c4.<89+2> r6c6.<68+4> + ls[2] r6c5.<24>

So, is there a collection of BUG Type 3s anywhere with quads or higher so I can check for hiddens somehow???

Cheers,
Paul
PIsaacson
 
Posts: 249
Joined: 02 July 2008

Re: Team project: C or C++ Explainer-like rating program

Postby champagne » Sun Oct 24, 2010 1:24 pm

PIsaacson wrote:But, I have a question about BUG Type 3 processing. Looking at the source code, it appears that there is no provision in SE for hidden locked sets, just naked sets generated by the LBM digits. Since the cells involved in generating the naked set don't need to share the same 2 values in the non-LBM candidates, I'm not sure that a hidden set makes any sense, unless it's on the LBM candidates??? Am I asking this correctly??? I can't find any examples of BUG Type 3 hidden sets anywhere and even the BUG Type 3 naked set appears to be really rare anyways. I'm just trying to ensure that all Type 3 patterns are handled in a similar fashion, if feasible.
So, is there a collection of BUG Type 3s anywhere with quads or higher so I can check for hiddens somehow???

Cheers,
Paul



I went thru the files and puzzles of the pattern game having the appropriate rating. I have seen no template in the comment for "hidden sets" in bugs and, as far as I remember, I preprocessed all examples and found none either.

SE rates Bugs with naked quads and bugs with naked (5).

the puzzles below should be examples of theese (ratings 6.0 and 6.1)

champagne

100000002030040050005607800004105900000000000007804200006209500070050060900000008 6.00 1.20 1.20
001000002090008030600090100000002000030040010000500000002030004080100090700000600 6.00 1.20 1.20
000090000008607100020000030100000007050402080009000200040020010001000900000050000 6.00 1.20 1.20
010002000340000000005036000000700809002000300906005000000190700000000043000800050 6.00 1.20 1.20
000000160000870000003000590070000004030080009000006000501000300706000000000420000 6.00 1.20 1.20
0046000000100085009000000705002000600000500000700000080600000010019000200000073046.00 1.20 1.20
0000000000012345000305060100130007400700000500560001800408020300076419000000000006.00 1.50 1.50
0000800000014056000700000204000000050800000900051034000900200803000100020000000006.00 1.50 1.50
0000600000014032000900000807000000010108090500040003000500700900080004000000100006.00 1.50 1.50
1030007000200000505000048060002091000000000000087060004013000080700000900060005076.00 2.00 2.00
1020304050000000004001060020070006008000200040050008002007030090000000005080402036.00 2.00 2.00
0000000000670005800307020400010209000009080000060503000504060300480001700000000006.00 2.30 2.30
0007030000090506000508000040070000890000400006300001004000060200020703000001020006.00 2.60 2.60
0006870000020007000600000309000030018000000076001000020300000400050008000002940006.00 2.60 2.60
0001230000004050000020006002700000463000000074500000380090001000006010000008570006.10 1.20 1.20
0000000000012345000201060700670002800900000400540007100408010200023678000000000006.10 1.20 1.20
0000000000640005800802030900090301000009050000070108000907020600580009400000000006.10 1.20 1.20
0200000400405070806090007030009060000040001000004010005070008020802050600100000906.10 1.20 1.20
3080004000900000705000049060007061000000000000021030006094000080200000100030006046.10 1.20 1.20
0100090003400000000020350000009006050090007007050020000001408000000000340007000206.10 1.20 1.20
0000000000012034000201050600540002700000900000730006800408060300024091000000000006.10 1.20 1.20
0000000000120003400305060100070408000002080000030705000709010200250004900000000006.10 2.00 2.00
0000000000082034000435016200340007600000000000520008400156073800074025000000000006.10 2.00 2.00
0000000000043058000209070100780006500000000000510004300102030900036087000000000006.10 2.30 2.30
champagne
2017 Supporter
 
Posts: 7455
Joined: 02 August 2007
Location: France Brittany

Re: Team project: C or C++ Explainer-like rating program

Postby daj95376 » Sun Oct 24, 2010 3:35 pm

While killing time and comparing my solver's solutions to SE_1.2.1/4, I happened to stop on champagne's fourth puzzle.

Code: Select all
Puzzle #4:

.1...2...34.........5.36......7..8.9..2...3..9.6..5......19.7.........43...8...5.

 +-----------------------+
 | . 1 . | . . 2 | . . . |
 | 3 4 . | . . . | . . . |
 | . . 5 | . 3 6 | . . . |
 |-------+-------+-------|
 | . . . | 7 . . | 8 . 9 |
 | . . 2 | . . . | 3 . . |
 | 9 . 6 | . . 5 | . . . |
 |-------+-------+-------|
 | . . . | 1 9 . | 7 . . |
 | . . . | . . . | . 4 3 |
 | . . . | 8 . . | . 5 . |
 +-----------------------+

   c3    Naked  Pair                     <> 34   r9c3
   c9    Naked  Pair                     <> 12   r237c9
 r7      Naked  Pair                     <> 34   r7c12

 r3  b1  Locked Candidate 1              <> 2    r3c78
   c7b9  Locked Candidate 1              <> 9    r123c7

 <89+2>  XY-Wing  r3c8/r3c2+r7c8         <> 2    r7c2

 +-----------------------------------------------------+
 |  6    1    8    |  9    7    2    |  5    3    4    |
 |  3    4    79   |  5    1    8    |  26   29   67   |
 |  27   29   5    |  4    3    6    |  1    89   78   |
 |-----------------+-----------------+-----------------|
 |  45   35   34   |  7    2    1    |  8    6    9    |
 |  1    8    2    |  6    4    9    |  3    7    5    |
 |  9    7    6    |  3    8    5    |  4    1    2    |
 |-----------------+-----------------+-----------------|
 | *25  *56   34   |  1    9    34   |  7    28   68   |
 |  8   *69   1    |  2    5    7    |  69   4    3    |
 |  47+2 23+9 79   |  8    6    34   | @29   5    1    |
 +-----------------------------------------------------+
 # 26 eliminations remain

Here's SE's analysis of the above grid.

SE 1.2.1/4 wrote:Bivalue Universal Grave type 3 (with Naked Quad)
If the values 2 and 9 were removed from the cells R9C2 and R9C1, the Sudoku would exhibit a Bivalue Universal Grave pattern (or BUG).
In a BUG, each value that remains in a row, column or block has exactly two possible positions in that row, column or block; and each empty cell has exactly two possible values. A Sudoku having a BUG has zero, two or more valid solutions.
Because a valid Sudoku has exactly one solution, the BUG cannot be part of it. The only way to avoid the BUG is if at least one of the cells R9C2 or R9C1 contains one of the values 2 or 9. It follows that one of R9C2 or R9C1 forms a Naked Quad with R7C1, R7C2 and R8C2 on the values 2, 5, 6 and 9 in the block.
Other potential positions of the values 2, 5, 6 and 9 can therefore be removed from the block.

I would have expected SE to join the BUG candidates with the (@) cell instead of the (*) cells. I'd better check the hierarchy again.
daj95376
2014 Supporter
 
Posts: 2624
Joined: 15 May 2006

Re: Team project: C or C++ Explainer-like rating program

Postby champagne » Sun Oct 24, 2010 3:54 pm

daj95376 wrote:While killing time and comparing my solver's solutions to SE_1.2.1/4, I happened to stop on champagne's fourth puzzle.
....

I would have expected SE to join the BUG candidates with the (@) cell instead of the (*) cells. I'd better check the hierarchy again.



preliminary remark, all these puzzles have been played in the pattern game.

To come to your point, in SE logic, if i am right, Candidates are erased one by one if they fullfil specific conditions. (the candidate erased must promote an even parity).

I applied it in that way, and so far it works. (but I have still many tests to do).

Doing so, the count in other row/col/box is not changed.

But I am not at all an expert in BUGs. I only sorted BUG type 1 in my solver. I always found much clear to do a very simple coloring.

champagne
champagne
2017 Supporter
 
Posts: 7455
Joined: 02 August 2007
Location: France Brittany

Re: Team project: C or C++ Explainer-like rating program

Postby PIsaacson » Sun Oct 24, 2010 8:07 pm

Champagne,

For puzzles 4 and 13, my code locates a simpler BUG Type 3 naked pair instead of the higher scoring quads resulting in a 5.8 score instead of 6.0:
Code: Select all
.1...2...34.........5.36......7..8.9..2...3..9.6..5......19.7.........43...8...5. Puzzle #4

 678       1         789      |459       4578      2        |4569      36789     45678   
 3         4         789      |59        1578      1789     |12569     126789    125678   
 278       2789      5        |49        3         6        |1249      12789     12478   
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 145       35        134      |7         1246      134      |8         126       9       
 14578     578       2        |469       1468      1489     |3         167       14567   
 9         378       6        |234       1248      5        |124       127       1247     
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 24568     23568     348      |1         9         34       |7         268       268     
 125678    256789    1789     |256       2567      7        |1269      4         3       
 12467     23679     13479    |8         2467      347      |1269      5         126     

  1)  1.2 r1c1 <= 6 hidden single in b1
  2)  1.2 r1c8 <= 3 hidden single in b3
  3)  1.2 r5c9 <= 5 hidden single in b6
  4)  1.5 r6c4 <= 3 hidden single in c4
  5)  1.5 r8c4 <= 2 hidden single in c4
  6)  1.2 r8c5 <= 5 hidden single in b8
  7)  1.2 r9c5 <= 6 hidden single in b8
  8)  1.2 r5c4 <= 6 hidden single in b5
  9)  1.2 r5c6 <= 9 hidden single in b5
 10)  1.2 r4c8 <= 6 hidden single in b6
 11)  1.5 r4c5 <= 2 hidden single in r4
 12)  1.5 r2c6 <= 8 hidden single in c6
 13)  1.2 r2c5 <= 1 hidden single in b2
 14)  1.2 r1c5 <= 7 hidden single in b2
 15)  1.2 r4c6 <= 1 hidden single in b5
 16)  1.2 r5c1 <= 1 hidden single in b4
 17)  1.5 r5c5 <= 4 hidden single in r5
 18)  1.0 r6c5 <= 8 full house in c5
 19)  1.2 r5c2 <= 8 hidden single in b4
 20)  1.0 r5c8 <= 7 full house in r5
 21)  1.2 r6c2 <= 7 hidden single in b4
 22)  2.0 r8c6 <= 7    direct hidden pair r79c6.<34>
 23)  2.3 r8c1 <= 8 naked single
 24)  1.2 r1c3 <= 8 hidden single in b1
 25)  1.7 r1c4 <= 9 direct pointing b9/c7
 26)  1.2 r3c4 <= 4 hidden single in b2
 27)  1.0 r2c4 <= 5 full house in b2
 28)  1.2 r1c7 <= 5 hidden single in b3
 29)  1.0 r1c9 <= 4 full house in r1
 30)  1.2 r6c7 <= 4 hidden single in b6
 31)  2.6 r3c7 <> 2 locked candidates type 1 (pointing) b1/r3
 32)  2.6 r3c8 <> 2 locked candidates type 1 (pointing) b1/r3
 33)  2.6 r3c9 <> 2 locked candidates type 1 (pointing) b1/r3
 34)  2.6 r2c7 <> 9 locked candidates type 1 (pointing) b9/c7
 35)  2.6 r3c7 <> 9 locked candidates type 1 (pointing) b9/c7
 36)  2.3 r3c7 <= 1 naked single
 37)  1.2 r9c9 <= 1 hidden single in b9
 38)  1.2 r6c8 <= 1 hidden single in b6
 39)  1.0 r6c9 <= 2 full house in r6
 40)  1.2 r8c3 <= 1 hidden single in b7
 41)  3.0 r7c1 <> 4    naked pair r7c36.<34>
 42)  3.0 r7c2 <> 3    naked pair r7c36.<34>
 43)  3.0 r9c3 <> 34   naked pair r47c3.<34>
 44)  4.2 r7c2 <> 2 xy-wing at r3c8.<89> 1) r3c2.<29> 2) r7c8.<28>

bug grid type 3

 6         1         8        |9         7         2        |5         3         4       
 3         4         79       |5         1         8        |26        29        67       
 27        29        5        |4         3         6        |1         89        78       
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 45        35        34       |7         2         1        |8         6         9       
 1         8         2        |6         4         9        |3         7         5       
 9         7         6        |3         8         5        |4         1         2       
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 25        56        34       |1         9         34       |7         28        68       
 8         69        1        |2         5         7        |69        4         3       
 47+2      23+9      79       |8         6         34       |29        5         1       

 45)  5.8 r9c3 <> 9    bug type 3 r9c1.<47+2> r9c2.<23+9> + ls[2] r9c7.<29>
 46)  1.5 r2c3 <= 9 hidden single in c3
 47)  1.2 r3c1 <= 7 hidden single in b1
 48)  1.0 r3c2 <= 2 full house in b1
 49)  1.2 r2c9 <= 7 hidden single in b3
 50)  1.2 r2c7 <= 6 hidden single in b3
 51)  1.0 r2c8 <= 2 full house in r2
 52)  1.2 r3c8 <= 9 hidden single in b3
 53)  1.0 r3c9 <= 8 full house in r3
 54)  1.0 r7c8 <= 8 full house in c8
 55)  1.0 r7c9 <= 6 full house in c9
 56)  1.2 r8c2 <= 6 hidden single in b7
 57)  1.0 r8c7 <= 9 full house in r8
 58)  1.0 r9c7 <= 2 full house in c7
 59)  1.2 r7c1 <= 2 hidden single in b7
 60)  1.2 r7c2 <= 5 hidden single in b7
 61)  1.2 r4c1 <= 5 hidden single in b4
 62)  1.0 r9c1 <= 4 full house in c1
 63)  1.2 r4c3 <= 4 hidden single in b4
 64)  1.0 r4c2 <= 3 full house in r4
 65)  1.0 r9c2 <= 9 full house in c2
 66)  1.2 r7c3 <= 3 hidden single in b7
 67)  1.0 r9c3 <= 7 full house in c3
 68)  1.0 r7c6 <= 4 full house in r7
 69)  1.0 r9c6 <= 3 full house in c6
.1...2...34.........5.36......7..8.9..2...3..9.6..5......19.7.........43...8...5. 1 5.8 1.2 1.2 0.7540ms

...7.3.....9.5.6...5.8....4..7....89....4....63....1..4....6.2...2.7.3.....1.2... Puzzle #13

 128       12468     1468     |7         1269      3        |2589      159       1258     
 12378     12478     9        |24        5         14       |6         137       12378   
 1237      5         136      |8         1269      19       |279       1379      4       
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 125       124       7        |2356      1236      15       |245       8         9       
 12589     1289      158      |23569     4         15789    |257       3567      23567   
 6         3         458      |259       289       5789     |1         457       257     
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 4         1789      1358     |359       389       6        |5789      2         1578     
 1589      1689      2        |459       7         4589     |3         14569     1568     
 35789     6789      3568     |1         389       2        |45789     45679     5678     

  1)  1.7 r4c4 <= 6 direct pointing b2/c5
  2)  1.5 r4c5 <= 3 hidden single in r4
  3)  1.2 r7c4 <= 3 hidden single in b8
  4)  2.0 r2c4 <= 2    direct hidden pair r13c5.<16>
  5)  2.0 r3c6 <= 9    direct hidden pair r13c5.<16>
  6)  2.0 r6c5 <= 2    direct hidden pair r13c5.<16>
  7)  1.2 r2c6 <= 4 hidden single in b2
  8)  1.2 r8c4 <= 4 hidden single in b8
  9)  1.2 r8c6 <= 5 hidden single in b8
 10)  1.5 r6c4 <= 9 hidden single in r6
 11)  1.0 r5c4 <= 5 full house in c4
 12)  2.0 r1c9 <= 2    direct hidden pair r5c89.<36>
 13)  2.0 r5c8 <> 7    direct hidden pair r5c89.<36>
 14)  2.0 r5c9 <> 27   direct hidden pair r5c89.<36>
 15)  1.2 r3c1 <= 2 hidden single in b1
 16)  2.0 r2c9 <= 8    direct hidden pair r1c78.<59>
 17)  2.0 r1c8 <> 1    direct hidden pair r1c78.<59>
 18)  1.5 r5c9 <= 3 hidden single in c9
 19)  1.2 r5c8 <= 6 hidden single in b6
 20)  2.0 r4c1 <= 5    direct hidden pair r4c27.<24>
 21)  2.0 r4c2 <> 1    direct hidden pair r4c27.<24>
 22)  1.5 r4c6 <= 1 hidden single in r4
 23)  2.0 r3c7 <= 7    direct hidden pair b3x58.<13>
 24)  1.5 r5c6 <= 7 hidden single in r5
 25)  1.0 r6c6 <= 8 full house in b5
 26)  2.0 r9c8 <= 4    direct hidden pair r6c89.<57>
 27)  2.0 r4c7 <= 4    direct hidden pair r6c89.<57>
 28)  2.0 r6c3 <= 4    direct hidden pair r6c89.<57>
 29)  1.0 r4c2 <= 2 full house in r4
 30)  1.2 r1c2 <= 4 hidden single in b1
 31)  1.2 r5c7 <= 2 hidden single in b6
 32)  1.5 r6c8 <= 7 hidden single in c8
 33)  1.0 r6c9 <= 5 full house in r6
 34)  1.5 r1c8 <= 5 hidden single in c8
 35)  1.2 r1c7 <= 9 hidden single in b3
 36)  1.2 r8c8 <= 9 hidden single in b9
 37)  2.0 r5c1 <= 9    direct hidden pair r29c1.<37>
 38)  2.0 r2c1 <> 1    direct hidden pair r29c1.<37>
 39)  2.0 r9c1 <> 89   direct hidden pair r29c1.<37>
 40)  2.6 r9c3 <> 6 locked candidates type 1 (pointing) b1/c3
 41)  2.8 r7c2 <> 8 locked candidates type 2 (claiming) b7/r8
 42)  2.8 r7c3 <> 8 locked candidates type 2 (claiming) b7/r8
 43)  2.8 r9c2 <> 8 locked candidates type 2 (claiming) b7/r8
 44)  2.8 r9c3 <> 8 locked candidates type 2 (claiming) b7/r8
 45)  4.5 r1c3 <> 1    unique rectangle type 4 1/6 r1c35 r3c35
 46)  4.5 r3c3 <> 1    unique rectangle type 4 1/6 r1c35 r3c35

bug grid type 3

 18        4         68       |7         16        3        |9         5         2       
 37        17        9        |2         5         4        |6         13        8       
 2         5         36       |8         16        9        |7         13        4       
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 5         2         7        |6         3         1        |4         8         9       
 9         18        18       |5         4         7        |2         6         3       
 6         3         4        |9         2         8        |1         7         5       
 --------- --------- ---------+--------- --------- ---------+--------- --------- ---------
 4         79+1      15       |3         89        6        |58        2         17       
 18        68+1      2        |4         7         5        |3         9         16       
 37        69+7      35       |1         89        2        |58        4         67       

 47)  5.8 r5c2 <> 1    bug type 3 r7c2.<79+1> r8c2.<68+1> r9c2.<69+7> + ls[2] r2c2.<17>
 48)  1.2 r5c3 <= 1 hidden single in b4
 49)  1.0 r5c2 <= 8 full house in b4
 50)  1.2 r8c1 <= 8 hidden single in b7
 51)  1.2 r1c3 <= 8 hidden single in b1
 52)  1.2 r3c3 <= 6 hidden single in b1
 53)  1.2 r2c1 <= 3 hidden single in b1
 54)  1.2 r2c2 <= 7 hidden single in b1
 55)  1.0 r1c1 <= 1 full house in b1
 56)  1.0 r1c5 <= 6 full house in r1
 57)  1.0 r9c1 <= 7 full house in c1
 58)  1.0 r2c8 <= 1 full house in r2
 59)  1.0 r3c5 <= 1 full house in b2
 60)  1.0 r3c8 <= 3 full house in r3
 61)  1.2 r9c3 <= 3 hidden single in b7
 62)  1.0 r7c3 <= 5 full house in c3
 63)  1.2 r9c7 <= 5 hidden single in b9
 64)  1.0 r7c7 <= 8 full house in c7
 65)  1.2 r9c5 <= 8 hidden single in b8
 66)  1.0 r7c5 <= 9 full house in c5
 67)  1.2 r9c2 <= 9 hidden single in b7
 68)  1.0 r9c9 <= 6 full house in r9
 69)  1.2 r8c2 <= 6 hidden single in b7
 70)  1.0 r7c2 <= 1 full house in c2
 71)  1.0 r7c9 <= 7 full house in r7
 72)  1.0 r8c9 <= 1 full house in r8
...7.3.....9.5.6...5.8....4..7....89....4....63....1..4....6.2...2.7.3.....1.2... 2 5.8 1.7 1.7 0.6227ms

What's peculiar is that if you hit the "Get All Hints", SE will display the lower scoring naked pair, so it's detecting it but somehow selecting the higher score instead??? I guess this is yet another minor glitch/bug/flaw in SE...

Cheers,
Paul
PIsaacson
 
Posts: 249
Joined: 02 July 2008

Re: Team project: C or C++ Explainer-like rating program

Postby ronk » Sun Oct 24, 2010 8:37 pm

PIsaacson wrote:What's peculiar is that if you hit the "Get All Hints", SE will display the lower scoring naked pair, so it's detecting it but somehow selecting the higher score instead??? I guess this is yet another minor glitch/bug/flaw in SE...

Can you determine ... easily determine, that is ... whether any of the other 12 puzzles also have their "BUG type 3 quads" in a box? [edit: On second thought, never mind. Without knowing what else might exist in an intersecting line, this probably wouldn't be meaningful without a visual inspection anyway.]

However, lksudoku is pretty good at reading the java code, and can likely find the cause of this anomaly too.

BTW there are another 25 puzzles rated ER=6.0 available from the Patterns Game. Here is the current full set of 39.
Hidden Text: Show
Code: Select all
010000020340000056000504000007685200000107000001432700000306000560000038090000040 # 6.0/1.0/1.0 - JPF
000090870000006005000407690010205760000000000078309050083602000500900000041070000 # 6.0/1.2/1.2 - champagne
001000700020003040300000506000400070000050800090006000609020008040700090005000300 # 6.0/1.2/1.2 - gsf
004200030002104005160900000835000060000000000040000378000007019500602700090003200 # 6.0/1.2/1.2 - gsf
100000509030400070004000000060001030000059000000780000900000001040300060800000200 # 6.0/1.2/1.2 - gsf
001000002090008030600090100000002000030040010000500000002030004080100090700000600 # 6.0/1.2/1.2 - gsf
702000300000002050603070001000800040006000100090005000400020705010600000009000403 # 6.0/1.2/1.2 - gsf
000703000009050700070800002003000045000010000150000200400007030001060900000402000 # 6.0/1.2/1.2 - gsf
001036007040100003800000000000200090030010070080009000000000005700008020600950100 # 6.0/1.2/1.2 - gsf
102000300000009060900020008000500030007080900050004000300050009010800000006000402 # 6.0/1.2/1.2 - gsf
000000806070006050003070000000200080006030200010004000000020300050900010108000000 # 6.0/1.2/1.2 - gsf
000090000008607100020000030100000007050402080009000200040020010001000900000050000 # 6.0/1.2/1.2 - gsf
001002003020010400300900070006000004010090030800000900030004007004050090600700200 # 6.0/1.2/1.2 - gsf
000000000012003004054006007000030040000200100067008003000080900000100060073002001 # 6.0/1.2/1.2 - JPF
010000020030405060706000408000601000009000200000803000501000603040309050070000010 # 6.0/1.2/1.2 - JPF
100020003030000040000506000004000300600070002008000900000908000090000050200060007 # 6.0/1.2/1.2 - JPF
000000000001203400040105020064000310000070000089000540030708060005409100000000000 # 6.0/1.2/1.2 - JPF
010002000340000000005036000000700809002000300906005000000190700000000043000800050 # 6.0/1.2/1.2 - JPF
100000002030040050005607800004105900000000000007804200006209500070050060900000008 # 6.0/1.2/1.2 - JPF
102000300040005000600070005000803090003000800080902000500060009000100050007000208 # 6.0/1.2/1.2 - JPF
004050100080009020200000304000000080300060200010000000708040003090600010006000500 # 6.0/1.2/1.2 - ronk
001000200034000560750000031000803000000921000000706000620000058087000320009000400 # 6.0/1.2/1.2 - TTHsieh
001230000004000000005000461000708002500010008100602000478000300000000900000073100 # 6.0/1.2/1.2 - TTHsieh
000208070800000500026005100904603005000000000300501604008400360002000001090102000 # 6.0/1.2/1.2 + gsf
400080001009704600060000020500000008080306040000000000006090300020000080000040000 # 6.0/1.2/1.2 + gsf
009006003030000070100050800000603002006000900300704000001080005060000020800200400 # 6.0/1.2/1.2 + gsf
000000160000870000003000590070000004030080009000006000501000300706000000000420000 # 6.0/1.2/1.2 + gsf
004600000010008500900000070500200060000050000070000008060000001001900020000007304 # 6.0/1.2/1.2 + gsf
000080000001405600070000020400000005080000090005103400090020080300010002000000000 # 6.0/1.5/1.5 - gsf
000000000001234500030506010013000740070000050056000180040802030007641900000000000 # 6.0/1.5/1.5 - TTHsieh
000060000001403200090000080700000001010809050004000300050070090008000400000010000 # 6.0/1.5/1.5 + gsf
103000700020000050500004806000209100000000000008706000401300008070000090006000507 # 6.0/2.0/2.0 - gsf
102030405000000000400106002007000600800020004005000800200703009000000000508040203 # 6.0/2.0/2.0 - JPF
000000400000020079001050680010009006004080300300700090028040500640010000003000000 # 6.0/2.0/2.0 1 gsf
000000000067000580030702040001020900000908000006050300050406030048000170000000000 # 6.0/2.3/2.3 - gsf
000703000009050600050800004007000089000040000630000100400006020002070300000102000 # 6.0/2.6/2.6 - gsf
000687000002000700060000030900003001800000007600100002030000040005000800000294000 # 6.0/2.6/2.6 - tarek
000000000012003004056007002000060040000800700043005006000090600000500010037001005 # 6.0/3.4/3.4 + JPF
000000100000020034003050620070004008006080200800900060065090300980040000002000000 # 6.0/3.6/2.6 + joel64
ronk
2012 Supporter
 
Posts: 4764
Joined: 02 November 2005
Location: Southeastern USA

Re: Team project: C or C++ Explainer-like rating program

Postby lksudoku » Mon Oct 25, 2010 12:18 am

PIsaacson wrote:I can't find any examples of BUG Type 3 hidden sets anywhere

SE does not search for BUG hidden sets, only BUG naked sets, it looks as if it searches for naked sets of degree 2 to 6

PIsaacson wrote:What's peculiar is that if you hit the "Get All Hints", SE will display the lower scoring naked pair, so it's detecting it but somehow selecting the higher score instead??? I guess this is yet another minor glitch/bug/flaw in SE...

I looked at the SE code, and I think SE BUG has the following bug:
When rating or choosing next hint, BUG returns the first found hint, therefore, if there are several BUG hints of different ratings and/or types, it may return a BUG hint with higher rating, just because it was found first
lksudoku
 
Posts: 90
Joined: 06 October 2010

PreviousNext

Return to Software