999 (and 999b)

Post puzzles for others to solve here.

Re: 999 (and 999b)

Postby SpAce » Fri Dec 11, 2020 2:20 am

Hi Denis,

denis_berthier wrote:The rules forced into activity by other ones are clearly stated in the Manual. This forcing is justified by logic ...

Thanks for explaining. Unfortunately I can't agree with those justifications. They might make sense from some points of view, but they're anything but helpful for a user interested in analyzing particular advanced rules and their notations. In fact, the forced dependencies probably make SudoRules all but useless for me unless I figure out a way to disable them :( I have no interest in searching for rare puzzles that might or might not unlock rules that are normally blocked by layers of forced simpler rules.

I made the consistency constraints automatic in SudoRules to simplify the user's life.

That's what the designers of automatic formatting and spelling correctors probably said when they made them almost impossible turn off :D (I don't hugely appreciate when a piece of software thinks it knows better what I want.)
User avatar
SpAce
 
Posts: 2671
Joined: 22 May 2017

Re: 999 (and 999b)

Postby denis_berthier » Fri Dec 11, 2020 4:00 am

SpAce wrote:
denis_berthier wrote:The rules forced into activity by other ones are clearly stated in the Manual. This forcing is justified by logic ...

Thanks for explaining. Unfortunately I can't agree with those justifications. They might make sense from some points of view, but they're anything but helpful for a user interested in analyzing particular advanced rules and their notations. In fact, the forced dependencies probably make SudoRules all but useless for me unless I figure out a way to disable them :( I have no interest in searching for rare puzzles that might or might not unlock rules that are normally blocked by layers of forced simpler rules.

I don't see what notation has to do with the activation of particular rules.
There are not "layers of forced rules", only a few forced ones.
This still allows lots of possibilities of rule combinations in the config file.
As you don't say what particular kind of forcing bothers you, I can't be more precise.



SpAce wrote:
denis_berthier wrote:]I made the consistency constraints automatic in SudoRules to simplify the user's life.

That's what the designers of automatic formatting and spelling correctors probably said when they made them almost impossible turn off :D (I don't hugely appreciate when a piece of software thinks it knows better what I want.)

No; it's what software developers normally do to make their software robust: disabling command combinations that might lead to inconsistent situations.
denis_berthier
2010 Supporter
 
Posts: 3970
Joined: 19 June 2007
Location: Paris

Re: 999 (and 999b)

Postby SpAce » Fri Dec 11, 2020 4:39 am

denis_berthier wrote:I don't see what notation has to do with the activation of particular rules.

Advanced rules need advanced notations. For example, I have no idea how you'd notate forcing whips/braids, or ones with inner whips/braids, etc. The PBCS lacks actual examples of many concepts it talks about, and I haven't seen them in your solutions either.

There are not "layers of forced rules", only a few forced ones.

I got a different impression from what you wrote. My response was based solely on that, as I haven't had time to play with SudoRules since that first trial.

This still allows lots of possibilities of rule combinations in the config file.
As you don't say what particular kind of forcing bothers you, I can't be more precise.

I already mentioned forcing whips/braids. It was one that particularly interested me, but I have no idea how to get to see them. Ditto for all the other advanced whip/braid types, i.e. anything beyond the g-variants. (I'm not particularly interested in patterns that aren't specific to your system.)

No; it's what software developers normally do to make their software robust: disabling command combinations that might lead to inconsistent situations.

Not if there's even a slightest chance that those combinations might actually be wanted by users. In that case there should be other kinds of safeguards to ensure consistency -- or warnings when risky features are being enabled. Truly robust products can take a lot of abuse without breaking, which allows them to grant more freedom to the users. That has a tendency to promote innovative usage scenarios that hadn't even occurred to the designers.
User avatar
SpAce
 
Posts: 2671
Joined: 22 May 2017

Re: 999 (and 999b)

Postby denis_berthier » Fri Dec 11, 2020 5:23 am

SpAce wrote:
denis_berthier wrote:I don't see what notation has to do with the activation of particular rules.

Advanced rules need advanced notations. For example, I have no idea how you'd notate forcing whips/braids, or ones with inner whips/braids, etc. The PBCS lacks actual examples of many concepts it talks about, and I haven't seen them in your solutions either.

As stated in the BUM, rules for dealing with puzzles beyond g-T&E (mainly rules with inner Subsets or inner whips/braids) are not available in this first public release of CSP-Rules.


SpAce wrote:
denis_berthier wrote:As you don't say what particular kind of forcing bothers you, I can't be more precise.

I already mentioned forcing whips/braids. It was one that particularly interested me, but I have no idea how to get to see them.

And I already answered about them:
- whips and forcing-whips are built on the same partial-whips
- it'd be inconsistent to allow forcing whips without whips of same length (and it's a topic also for conjugated tracks, but Robert doesn't even mention it).

One more possibility I've added recently is focusing the search for activated patterns (whips...) on pre-selected candidates. Use function "try-to-eliminate-candidates" instead of "solve".
denis_berthier
2010 Supporter
 
Posts: 3970
Joined: 19 June 2007
Location: Paris

Re: 999 (and 999b)

Postby SpAce » Fri Dec 11, 2020 8:48 am

denis_berthier wrote:As stated in the BUM, rules for dealing with puzzles beyond g-T&E (mainly rules with inner Subsets or inner whips/braids) are not available in this first public release of CSP-Rules.

Ok, I can understand that. Have you defined notations for them? Can you produce any examples?

And I already answered about them:
- whips and forcing-whips are built on the same partial-whips
- it'd be inconsistent to allow forcing whips without whips of same length

I'm not sure I understand why. I can't see any logical necessity for forcing whips active if forcing whips are active (pun intended) :)

(and it's a topic also for conjugated tracks, but Robert doesn't even mention it).
I don't know how Robert deals with single tracks that lead to a contradiction within conjugated tracks, but he has to face the same question.

I'm pretty sure Robert has answered that question, and it's probably written in his documentation. I've also answered it before because it's exactly the same with GEM. If one of the two parities (or conjugated tracks, or forcing whip branches) leads to a contradiction, there's no need to look for further verity-agreements between the two branches. In that case one parity is false and the other true, which obviously yields more results than what the two could achieve together. Both Robert and I would most likely use the found contradiction, which would immediately destroy the underlying GEM-coloring, conjugated tracks, or forcing whip. I don't think there should be anything unclear about that.

However, it might take a long time to develop a branch so far that it would produce a contradiction, or one might not be found at all, especially if it would require deeper OR-branching. That's why it's not the main goal of the two-prong approach at all. It's about finding agreements between the branches, and some purists might not even accept anything else if their aversion to direct contradictions is severe enough. Simulating such a purist approach with SudoRules is impossible if whips are automatically active with forcing whips.

All of that should apply to forcing whips/braids. At shorter lengths they would find mainly verity eliminations through agreements, but eventually one or the other branch would run into a contradiction (unless OR-branching is needed, in which case it just gets blocked). Accepting the contradiction would yield a normal whip/braid for one of the branches, eliminating the original assumption of that branch and validating the other branch. Yet, accepting it should be the user's choice and not yours.

The proper way to use forcing whips/braids would be to build both branches simultaneously and gradually, picking any found trap eliminations on the way, and keep building it instead of jumping to search simpler patterns after each increment of length. That's exactly what Robert has been telling you as well. I doubt your implementation is doing it like that because it wouldn't match your idea of the simplest-first strategy. However, it really is the simplest and the most efficient way to solve for a manual solver, at least in most cases.

One more possibility I've added recently is focusing the search for activated patterns (whips...) on pre-selected candidates. Use function "try-to-eliminate-candidates" instead of "solve".

As I've said before, that's a very good addition. I'll try it at some point. Can you give an example of the full command with the necessary parameters?
User avatar
SpAce
 
Posts: 2671
Joined: 22 May 2017

Re: 999 (and 999b)

Postby denis_berthier » Fri Dec 11, 2020 9:51 am

SpAce wrote:
denis_berthier wrote:One more possibility I've added recently is focusing the search for activated patterns (whips...) on pre-selected candidates. Use function "try-to-eliminate-candidates" instead of "solve".

As I've said before, that's a very good addition. I'll try it at some point. Can you give an example of the full command with the necessary parameters?


The syntax is:
(try-to-eliminate-candidates "puzzle-in-standard-line-format" cand1 cand2.....)
- the double quotes for the 81-character string are mandatory
- for Sudoku[9] and when no g-chain is activated, each cand can be written directly as nrc, with n, r, c = 1...9
As of now, this works only for whips and braids (and therefore for forcing-whips and forcing-braids). However, it doesn't restrict the whips[1].
Notice that this is still experimental.
denis_berthier
2010 Supporter
 
Posts: 3970
Joined: 19 June 2007
Location: Paris

Re: 999 (and 999b)

Postby Mauriès Robert » Fri Dec 11, 2020 10:22 am

SpAce wrote:I'm pretty sure Robert has answered that question, and it's probably written in his documentation. I've also answered it before because it's exactly the same with GEM. If one of the two parities (or conjugated tracks, or forcing whip branches) leads to a contradiction, there's no need to look for further verity-agreements between the two branches. In that case one parity is false and the other true, which obviously yields more results than what the two could achieve together. Both Robert and I would most likely use the found contradiction, which would immediately destroy the underlying GEM-coloring, conjugated tracks, or forcing whip. I don't think there should be anything unclear about that.

I confirm, and as far as the conjugated tracks are concerned, the answer is contained in the definition: P1, P2 conjugated <=> P1 invalid (P1 meets a contradiction) => P2 valid (all the candidates of P2 are solutions).
I add that the justification for this definition is that we have the following property: E1 and E2 being two distinct sets of candidates, if P'(E1∪E2) is invalid => P(E1) and P(E2) are conjugated.
Obviously, most of the time, E1 and E2 form a partition (E1∩E2=∅) of a CSP variable, but we can study sets that are not partitions of CSP variables. Here is an example on this puzzle at the RS1 stage of Denis' solution.
E1={7r7c2, 5r1c3} et E2=1r3c6
P'(E1∪E2) : 7r3c2->5r3c6->5r2c7->... => 5b1 vide
P(E2) : 1r3c6->1r6c45->1r5c8->6r5c2->...
P(E1) = P(7r7c2)∩P(5r1c3) -> 9r4c2->...
So r4c2≠6.
puzzle: Show
Image

If we continue the construction of the P(E2) track, we get other eliminations including the X-wing on the 9, but not only. Here, P(E2) does not lead to contradiction, but if this had been the case, the candidates of P(E1) would all be placed.
This is just one example to illustrate my point, of course.
Robert
Mauriès Robert
 
Posts: 585
Joined: 07 November 2019
Location: France

Re: 999 (and 999b)

Postby SpAce » Fri Dec 11, 2020 5:30 pm

denis_berthier wrote:The syntax is:
...

Ok, thanks!

Notice that this is still experimental.

I understand perfectly. I'm glad you've chosen to publish anything at all.
User avatar
SpAce
 
Posts: 2671
Joined: 22 May 2017

Re: 999 (and 999b)

Postby denis_berthier » Sat Dec 12, 2020 5:31 am

SpAce wrote:
Notice that this is still experimental.

I understand perfectly. I'm glad you've chosen to publish anything at all.


Indeeed, I had totally forgotten to push this to GitHub. It's now done. You just have to update the version you downloaded.
denis_berthier
2010 Supporter
 
Posts: 3970
Joined: 19 June 2007
Location: Paris

Re: 999 (and 999b)

Postby SpAce » Wed Dec 16, 2020 11:15 pm

Hi Cenoman,

Having been distracted lately by unworthy discussions with predictable outcomes, I forgot to mention something much more relevant:

Cenoman wrote:999b
grid: Show
Code: Select all
 +---------------------+-----------------------------+---------------------+
 |  34   8     12567   |  1234567   1234567   1567   |  9     123   1234   |
 |  34   156   1256    |  9         123456    156    |  345   8     7      |
 |  9    157   1257    |  123457    8         157    |  345   6     1234   |
 +---------------------+-----------------------------+---------------------+
 |  5    169   1469    |  23        23        169    |  46    7     8      |
 |  2    16    8       |  57        57        4      |  36    13    9      |
 |  7    3     1469    |  16        169       8      |  2     5     14     |
 +---------------------+-----------------------------+---------------------+
 |  8    579   3579    |  4567      45679     5679   |  1     23    2356   |
 |  6    4     357     |  157       157       2      |  8     9     35     |
 |  1    2     59      |  8         569       3      |  7     4     56     |
 +---------------------+-----------------------------+---------------------+

DP(1234)r1c14589 (4 digits in 5 cells) having three guardians: 5,6,7 r1c45
(5)r1c45 - (5=671)r123c6
(6)r1c45 - (6=571)r123c6
(7)r1c45 - (7=561)r123c6
=> +1 r123c6 (-1 r4c6, -1 b2p1257); lclste

That's a really beautiful solution!
-SpAce-: Show
Code: Select all
   *             |    |               |    |    *
        *        |=()=|    /  _  \    |=()=|               *
            *    |    |   |-=( )=-|   |    |      *
     *                     \  ¯  /                   *   

"If one is to understand the great mystery, one must study all its aspects, not just the dogmatic narrow view of the Jedi."
User avatar
SpAce
 
Posts: 2671
Joined: 22 May 2017

Previous

Return to Puzzles