I've found that for some advanced techniques, I'm running into a problem of excess verbosity. Advanced coloring seems to be particularly bad about this, since it involves long conjugate chains. This is what my solver is spitting out, which I think is too wordy:
Advanced coloring finds a set of two conjugate chains r3c9=7 - r3c6=7 - r5c6=7 - r5c6=3; r4c5=3 - r4c5=8 - r4c9=8 - r3c9=8. Either r3c9=7 or r3c9=8, so r3c9≠5. There is another set of two conjugate chains r4c5=3 - r4c5=8 - r4c9=8 - r3c9=8; r3c9=7 - r3c6=7 - r5c6=7 - r5c6=3. Either r4c5=3 or r5c6=3, so r6c5≠3. There is another set of three conjugate chains r5c2=7 - r5c6=7 - r3c6=7 - r3c9=7; r3c9=8 - r4c9=8; r4c9=1 - r5c8=1. Either r5c2=7 or r5c8=1, or both, so r5c2≠1. There is another set of four conjugate chains r5c6=3 - r5c6=7 - r3c6=7 - r3c9=7; r3c9=8 - r4c9=8; r4c9=1 - r5c8=1; r5c8=9 - r5c7=9. Either r5c6=3 or r5c7=9, or both, so r5c7≠3. There is another set of three conjugate chains r5c6=3 - r5c6=7 - r3c6=7 - r3c9=7; r3c9=8 - r4c9=8; r4c9=1 - r5c8=1. Either r5c6=3 or r5c8=1, or both, so r5c8≠3. There is another set of three conjugate chains r8c1=7 - r8c7=7; r8c7=4 - r8c6=4 - r7c6=4 - r7c6=6; r3c6=6 - r3c4=6 - r8c4=6 - r8c4=5. Either r8c1=7 or r8c4=5, or both, so r8c1≠5. There is another conjugate chain r1c5=5 - r1c5=7 - r6c5=7 - r5c6=7 - r5c6=3 - r5c3=3 - r3c3=3 - r3c3=5. Either r1c5=5 or r3c3=5, so r1c2≠5 and r3c4≠5. There is another conjugate chain r3c1=3 - r3c1=4. Either r3c1=3 or r3c1=4, so r3c1≠5 and r3c1≠9. There is another conjugate chain r3c3=5 - r3c3=3 - r5c3=3 - r5c6=3 - r5c6=7 - r3c6=7 - r3c6=6 - r3c4=6 - r8c4=6 - r8c4=5. Either r3c3=5 or r8c4=5, so r8c3≠5. There is another set of two conjugate chains r5c8=1 - r4c9=1; r4c2=1 - r9c2=1. Either r5c8=1 or r9c2=1, or both, so r9c8≠1. There is another set of three conjugate chains r7c5=9 - r7c1=9; r1c1=9 - r1c1=2 - r4c1=2 - r4c2=2; r4c2=1 - r9c2=1 - r8c3=1 - r8c5=1. Either r7c5=9 or r8c5=1, or both, so r7c5≠1. There is another conjugate chain r1c5=5 - r8c5=5 which touches r7c5=5 at both ends. Either r1c5=5 or r8c5=5, so r7c5≠5, so r7c5=9. There is another conjugate chain r1c1=9 - r1c2=9 which touches r1c7=9 at both ends. Either r1c1=9 or r1c2=9, so r1c7≠9, so r5c7=9. There is another conjugate chain r1c1=9 - r1c2=9. Either r1c1=9 or r1c2=9, so r3c2≠9. There is another conjugate chain r1c5=5 - r8c5=5. Either r1c5=5 or r8c5=5, so r9c5≠5. There is another conjugate chain r3c2=5 - r3c3=5. Either r3c2=5 or r3c3=5, so r3c8≠5. There is another set of two conjugate chains r3c2=5 - r5c2=5 - r5c2=7 - r5c6=7 - r3c6=7 - r3c6=6 - r3c4=6 - r8c4=6; r8c3=6 - r8c3=1 - r9c2=1 - r4c2=1. Either r3c2=5 or r4c2=1, or both, so r4c2≠5. There is another conjugate chain r3c2=5 - r5c2=5. Either r3c2=5 or r5c2=5, so r9c2≠5. There is another conjugate chain r4c9=1 - r7c9=1. Either r4c9=1 or r7c9=1, so r9c9≠1. There is another set of two conjugate chains r4c1=2 - r1c1=2 - r1c1=9 - r9c1=9; r9c1=5 - r7c1=5. Either r4c1=2 or r7c1=5, or both, so r4c1≠5. There is another set of three conjugate chains r7c1=5 - r9c1=5; r9c1=9 - r9c2=9 - r9c2=1 - r4c2=1; r4c9=1 - r7c9=1. Either r7c1=5 or r7c9=1, or both, so r7c9≠5.
The constant repetition of "there is another..." is a little annoying, but then you can only get automated output to look natural to a point. I can probably simply not print a chain that's only two cells long, like the r3c2=5-r3c3=5 chain mentioned above.
The quesiton before the group is: Am I on the right track? How might I set up the program to print this differently, without illustrating on a grid? Should I simply ditch printing the conjugate chains with this method? (It seems okay for simple coloring though.)
For those who want to see which puzzle this printout came from, it's this one:
- Code: Select all
. . .|3 . 1|. 4 .
. 6 7|. 4 .|. . .
. . .|. 2 .|1 . .
-----------------
. . .|. . 9|. 7 .
8 . .|. 6 .|. . .
. . 9|1 . 5|. . 2
-----------------
. 3 2|. . .|. . .
. . .|. . .|. 2 9
. . 4|7 . .|8 . .