Whip solver in javascript

Programs which generate, solve, and analyze Sudoku puzzles

Whip solver in javascript

Postby Mauricio » Fri Sep 07, 2012 12:06 am

I just learned a bit of javascript and decided to translate my C code for whips, here is the result

....................................Deleted.....................................

The puzzle has to be a string of length 81, with 0 as nongivens.

Comments are welcome.

Edit: Just checked and it works in Firefox 12(Windows), Chrome 21 (Windows), Safari 5.1.7 (Windows) but not in IE 9.
Last edited by Mauricio on Tue Jun 21, 2022 8:55 pm, edited 2 times in total.
Mauricio
 
Posts: 1175
Joined: 22 March 2006

Re: Whip solver in javascript

Postby dobrichev » Sat Sep 08, 2012 8:51 pm

17" on my htc android
dobrichev
2016 Supporter
 
Posts: 1863
Joined: 24 May 2010

Re: Whip solver in javascript

Postby tarek » Sat Sep 08, 2012 10:54 pm

Time elapsed: 7.86 seconds on iPhone ios
User avatar
tarek
 
Posts: 3762
Joined: 05 January 2006

Re: Whip solver in javascript

Postby Mauricio » Mon Sep 10, 2012 8:01 am

I have translated more functions, now you can choose to solve between whips, braids, and nrc (discontinuous nice loops).

The following puzzle has a high rating and little calculation time
Code: Select all
000001002000030040005200100003600010020070008900005700009007000080900004300040080
Mauricio
 
Posts: 1175
Joined: 22 March 2006

Re: Whip solver in javascript

Postby denis_berthier » Sat Sep 15, 2012 3:05 pm

Mauricio wrote:I just learned a bit of javascript and decided to translate my C code for whips, here is the result


The computation times seem to be good.
Did you compute a mean js/C time ratio ?

As for the notation, you're missing the main point of the nrc notation: each {llc rlc} pair of candidates appearing in a chain can be factorised as 2D-cell{llc-value rlc-value}.
As shown in "Constraint Resolution Theories" (CRT), all the chain patterns I introduced in "The Hidden Logic of Sudoku" can be generalised to any (finite) Constraint Satisfaction Problem [If you don't have CRT, you can also find part of this on my website, in pdf versions of papers I published before it].
In this generalisation, the nrc notation for such pairs has a natural and straightforward extension as csp-variable{llc-value rlc-value}. [The 2D-cells appearing in the Extended Sudoku Board are graphical representations of its CSP-variables.]
As a result, splitting the rc, rn, cn or bn cells into two parts just for the sake of keeping the (n, r, c) order is meaningless.

I also noticed an inversion of llc and rlc in some {. something}.
denis_berthier
2010 Supporter
 
Posts: 4208
Joined: 19 June 2007
Location: Paris

Re: Whip solver in javascript

Postby Mauricio » Fri Sep 21, 2012 2:28 am

denis_berthier wrote:The computation times seem to be good.
Did you compute a mean js/C time ratio ?

Surprisingly, in chrome for windows, javascript is between 10% and 100% slower than my c implementation , depending on the puzzle.

denis_berthier wrote:I also noticed an inversion of llc and rlc in some {. something}.
That nonstandard notation means a single is found.


I have updated the solver, now it can also solve using gBraids, I propose as a test case the following puzzle, gB=6 and not even a single vanilla Braid can be applied.
Code: Select all
001002003000030040200500100004006001070000080100900700002007006050080000300200900
Mauricio
 
Posts: 1175
Joined: 22 March 2006

Solving a puzle

Postby JC Van Hay » Fri Sep 21, 2012 8:36 am

Mauricio wrote:
Code: Select all
001002003000030040200500100004006001070000080100900700002007006050080000300200900

I enjoyed solving this interesting puzzle in the following way ...
From any one of the 2 weakly coupled Kites 1R8C5 and 2R5C8 forming a loop[4] :

    Kite(1r5c5=1r79c5-1r8c46=1r8c8)-Kite(2r8c8=2r46c8-2r5c79=2r5c5) @ :=> -1r7c4.r9c6,-37r8c8,-2r4c7.2r6c9,-45r5c5
and percolating through the puzzle using only Locked Candidates and Locked Subsets,

    r5c5=1<->r8c8=2;NP(34)r57c4;+[3r5c4 or 4r5c4]->contradiction
    OR
    r8c8=1<->r5c5=2;NP(45)R6c59;+[4r6c5->solution or 5r6c5->contradiction]
But this solution is may be off topic :-)
JC Van Hay
 
Posts: 719
Joined: 22 May 2010

Re: Whip solver in javascript

Postby yzfwsf » Thu Aug 04, 2022 8:09 am

Mauricio wrote:
denis_berthier wrote:The computation times seem to be good.
Did you compute a mean js/C time ratio ?

Surprisingly, in chrome for windows, javascript is between 10% and 100% slower than my c implementation , depending on the puzzle.

denis_berthier wrote:I also noticed an inversion of llc and rlc in some {. something}.
That nonstandard notation means a single is found.


I have updated the solver, now it can also solve using gBraids, I propose as a test case the following puzzle, gB=6 and not even a single vanilla Braid can be applied.
Code: Select all
001002003000030040200500100004006001070000080100900700002007006050080000300200900

This puzzle can be solved by g-Whip
Code: Select all
g-Whip[4]: Supposing 2r4c7 would causes 2 to disappear in Column 8 => r4c7<>2
2r4c7 - 2r5(c9=c5) - 1c5(r5=r79) - 1r8(c6=c8) - 2c8(r8=.)
g-Whip[4]: Supposing 4r5c5 would causes 1 to disappear in Column 5 => r5c5<>4
4r5c5 - 2r5(c5=c79) - 2c8(r6=r8) - 1r8(c8=c46) - 1c5(r9=.)
g-Whip[4]: Supposing 5r5c5 would causes 1 to disappear in Column 5 => r5c5<>5
5r5c5 - 2r5(c5=c79) - 2c8(r6=r8) - 1r8(c8=c46) - 1c5(r9=.)
g-Whip[4]: Supposing 2r6c9 would causes 2 to disappear in Column 8 => r6c9<>2
2r6c9 - 2r5(c7=c5) - 1c5(r5=r79) - 1r8(c6=c8) - 2c8(r8=.)
g-Whip[4]: Supposing 1r7c4 would causes 1 to disappear in Column 5 => r7c4<>1
1r7c4 - 1r8(c6=c8) - 2c8(r8=r46) - 2r5(c9=c5) - 1c5(r5=.)
g-Whip[4]: Supposing 3r8c8 would causes 2 to disappear in Column 8 => r8c8<>3
3r8c8 - 1r8(c8=c46) - 1c5(r9=r5) - 2r5(c5=c79) - 2c8(r6=.)
g-Whip[4]: Supposing 7r8c8 would causes 2 to disappear in Column 8 => r8c8<>7
7r8c8 - 1r8(c8=c46) - 1c5(r9=r5) - 2r5(c5=c79) - 2c8(r6=.)
g-Whip[4]: Supposing 1r9c6 would causes 1 to disappear in Column 5 => r9c6<>1
1r9c6 - 1r8(c4=c8) - 2c8(r8=r46) - 2r5(c9=c5) - 1c5(r5=.)
Whip[5]: Supposing 5r1c7 would causes 5 to disappear in Box 9 => r1c7<>5
5r1c7 - r4c7(5=3) - 3c8(r6=r7) - r7c4(3=4) - r9c6(4=5) - 5b9(p9=.)
Whip[5]: Supposing 5r2c7 would causes 5 to disappear in Box 9 => r2c7<>5
5r2c7 - r4c7(5=3) - 3c8(r6=r7) - r7c4(3=4) - r9c6(4=5) - 5b9(p9=.)
Whip[3]: Supposing 4r9c9 would causes 8 to disappear in Box 9 => r9c9<>4
4r9c9 - r6c9(4=5) - 5c7(r5=r7) - 8b9(p1=.)
Whip[5]: Supposing 3r5c7 will result in all candidates in cell r4c7 being impossible => r5c7<>3
3r5c7 - 3c8(r6=r7) - r7c4(3=4) - r9c6(4=5) - 5r7(c5=c7) - r4c7(5=.)
Whip[5]: Supposing 5r5c7 would causes 5 to disappear in Box 9 => r5c7<>5
5r5c7 - r4c7(5=3) - 3c8(r6=r7) - r7c4(3=4) - r9c6(4=5) - 5b9(p9=.)
Whip[4]: Supposing 8r7c7 would causes 3 to disappear in Column 7 => r7c7<>8
8r7c7 - 5c7(r7=r4) - r6c9(5=4) - 4c7(r5=r8) - 3c7(r8=.)
Hidden Single: 8 in b9 => r9c9=8
Whip[4]: Supposing 4r7c1 would causes 3 to disappear in Box 9 => r7c1<>4
4r7c1 - r7c4(4=3) - r7c7(3=5) - r4c7(5=3) - 3b9(p4=.)
Whip[4]: Supposing 5r4c8 would causes 5 to disappear in Box 9 => r4c8<>5
5r4c8 - 5r1(c8=c1) - 4c1(r1=r8) - 4b9(p6=p1) - 5b9(p1=.)
Whip[4]: Supposing 5r6c8 would causes 5 to disappear in Box 9 => r6c8<>5
5r6c8 - 5r1(c8=c1) - 4c1(r1=r8) - 4b9(p6=p1) - 5b9(p1=.)
Whip[4]: Supposing 4r7c2 would causes 3 to disappear in Box 9 => r7c2<>4
4r7c2 - r7c4(4=3) - r7c7(3=5) - r4c7(5=3) - 3b9(p4=.)
Whip[4]: Supposing 4r7c5 would causes 3 to disappear in Box 9 => r7c5<>4
4r7c5 - r7c4(4=3) - r7c7(3=5) - r4c7(5=3) - 3b9(p4=.)
Whip[4]: Supposing 4r8c4 would causes 4 to disappear in Box 9 => r8c4<>4
4r8c4 - 4c1(r8=r1) - 5r1(c1=c8) - 5b9(p8=p1) - 4b9(p1=.)
Whip[4]: Supposing 4r8c6 would causes 4 to disappear in Box 9 => r8c6<>4
4r8c6 - 4c1(r8=r1) - 5r1(c1=c8) - 5b9(p8=p1) - 4b9(p1=.)
g-Whip[4]: Supposing 6r1c1 would causes 4 to disappear in Column 1 => r1c1<>6
6r1c1 - 5r1(c1=c8) - 5b9(p8=p1) - 4b9(p1=p46) - 4c1(r8=.)
g-Whip[4]: Supposing 7r1c1 would causes 4 to disappear in Column 1 => r1c1<>7
7r1c1 - 5r1(c1=c8) - 5b9(p8=p1) - 4b9(p1=p46) - 4c1(r8=.)
Whip[3]: Supposing 7r2c4 would causes 7 to disappear in Box 1 => r2c4<>7
7r2c4 - 7r1(c5=c8) - 7r9(c8=c3) - 7b1(p9=.)
Whip[4]: Supposing 8r2c1 would causes 7 to disappear in Column 1 => r2c1<>8
8r2c1 - 8r7(c1=c2) - 1c2(r7=r9) - 4b7(p8=p4) - 7c1(r8=.)
g-Whip[4]: Supposing 8r1c1 would causes 4 to disappear in Column 1 => r1c1<>8
8r1c1 - 5r1(c1=c8) - 5b9(p8=p1) - 4b9(p1=p46) - 4c1(r8=.)
g-Whip[4]: Supposing 9r1c1 would causes 4 to disappear in Column 1 => r1c1<>9
9r1c1 - 5r1(c1=c8) - 5b9(p8=p1) - 4b9(p1=p46) - 4c1(r8=.)
g-Whip[4]: Supposing 3r7c7 would causes 5 to disappear in Box 9 => r7c7<>3
3r7c7 - 4b9(p1=p46) - 4c1(r8=r1) - 5r1(c1=c8) - 5b9(p8=.)
Whip[2]: Supposing 3r4c4 would causes 3 to disappear in Box 6 => r4c4<>3
3r4c4 - 3r7(c4=c8) - 3b6(p8=.)
Whip[5]: Supposing 4r1c4 would causes 7 to disappear in Column 4 => r1c4<>4
4r1c4 - 4r3(c6=c2) - 3r3(c2=c3) - 8r3(c3=c6) - 8c4(r2=r4) - 7c4(r4=.)
Whip[5]: Supposing 6r1c8 would causes 6 to disappear in Box 6 => r1c8<>6
6r1c8 - 5r1(c8=c1) - 4c1(r1=r8) - 7c1(r8=r2) - 6c1(r2=r5) - 6b6(p4=.)
Whip[6]: Supposing 1r5c4 would causes 3 to disappear in Column 4 => r5c4<>1
1r5c4 - 4c4(r5=r7) - 4r9(c6=c2) - 1c2(r9=r7) - 1c5(r7=r9) - 6b8(p8=p4) - 3c4(r8=.)
Whip[2]: Supposing 3r8c4 will result in all candidates in cell r7c4 being impossible => r8c4<>3
3r8c4 - r5c4(3=4) - r7c4(4=.)
Whip[6]: Supposing 3r6c8 would causes 6 to disappear in Box 6 => r6c8<>3
3r6c8 - r4c7(3=5) - r7c7(5=4) - 4r8(c9=c1) - 7c1(r8=r2) - 6c1(r2=r5) - 6b6(p4=.)
Locked Candidates 1 (Pointing): 3 in b6 => r4c2<>3
Whip[4]: Supposing 2r5c9 will result in all candidates in cell r6c8 being impossible => r5c9<>2
2r5c9 - 2r2(c9=c7) - 8c7(r2=r1) - 6c7(r1=r5) - r6c8(6=.)
Whip[3]: Supposing 7r1c8 would causes 5 to disappear in Box 3 => r1c8<>7
7r1c8 - 7c9(r3=r8) - 2c9(r8=r2) - 5b3(p6=.)
Locked Candidates 2 (Claiming): 7 in r1 => r3c5<>7
Whip[3]: Supposing 6r6c3 would causes 6 to disappear in Column 8 => r6c3<>6
6r6c3 - r9c3(6=7) - 7c8(r9=r3) - 6c8(r3=.)
Whip[3]: Supposing 5r9c8 would causes 7 to disappear in Column 8 => r9c8<>5
5r9c8 - r1c8(5=9) - r3c9(9=7) - 7c8(r3=.)
Locked Candidates 1 (Pointing): 5 in b9 => r7c5<>5
Whip[3]: Supposing 1r7c8 will result in all candidates in cell r7c2 being impossible => r7c8<>1
1r7c8 - r7c5(1=9) - r7c1(9=8) - r7c2(8=.)
Whip[4]: Supposing 9r1c5 would causes 9 to disappear in Box 8 => r1c5<>9
9r1c5 - r1c8(9=5) - r7c8(5=3) - 3r8(c7=c6) - 9b8(p6=.)
Whip[4]: Supposing 6r1c2 would causes 6 to disappear in Row 6 => r1c2<>6
6r1c2 - 9r1(c2=c8) - r3c9(9=7) - r3c8(7=6) - 6r6(c8=.)
Whip[4]: Supposing 8r1c2 will result in all candidates in cell r1c7 being impossible => r1c2<>8
8r1c2 - 9r1(c2=c8) - r3c9(9=7) - r3c8(7=6) - r1c7(6=.)
Whip[3]: Supposing 4r1c5 will result in all candidates in cell r1c2 being impossible => r1c5<>4
4r1c5 - r1c1(4=5) - r1c8(5=9) - r1c2(9=.)
Locked Candidates 2 (Claiming): 4 in r1 => r3c2<>4
Whip[3]: Supposing 9r2c1 would causes 7 to disappear in Column 1 => r2c1<>9
9r2c1 - r1c2(9=4) - 4c1(r1=r8) - 7c1(r8=.)
Whip[4]: Supposing 9r3c2 would causes 3 to disappear in Column 2 => r3c2<>9
9r3c2 - r3c9(9=7) - r3c8(7=6) - 6r6(c8=c2) - 3c2(r6=.)
Whip[4]: Supposing 9r3c3 would causes 9 to disappear in Box 2 => r3c3<>9
9r3c3 - r1c2(9=4) - 4c1(r1=r8) - 9r8(c1=c6) - 9b2(p6=.)
Whip[5]: Supposing 6r2c3 would causes 2 to disappear in Column 9 => r2c3<>6
6r2c3 - r9c3(6=7) - 7r8(c1=c9) - 7r2(c9=c1) - 5r2(c1=c9) - 2c9(r2=.)
Whip[5]: Supposing 1r2c6 would causes 9 to disappear in Box 2 => r2c6<>1
1r2c6 - 1c4(r2=r8) - 1c8(r8=r9) - 7c8(r9=r3) - r3c9(7=9) - 9b2(p9=.)
Hidden Single: 1 in r2 => r2c4=1
Naked Single: r8c4=6
Whip[3]: Supposing 6r5c3 would causes 6 to disappear in Column 1 => r5c3<>6
6r5c3 - r9c3(6=7) - 7c1(r8=r2) - 6c1(r2=.)
Whip[3]: Supposing 4r5c6 would causes 1 to disappear in Column 6 => r5c6<>4
4r5c6 - r5c4(4=3) - 3c6(r6=r8) - 1c6(r8=.)
Whip[4]: Supposing 8r4c1 would causes 8 to disappear in Box 5 => r4c1<>8
8r4c1 - r7c1(8=9) - 9r8(c3=c6) - r2c6(9=8) - 8b5(p9=.)
Hidden Single: 8 in c1 => r7c1=8
Whip[3]: Supposing 9r4c2 will result in all candidates in cell r1c2 being impossible => r4c2<>9
9r4c2 - r4c1(9=5) - r1c1(5=4) - r1c2(4=.)
Whip[4]: Supposing 5r5c9 would causes 5 to disappear in Column 7 => r5c9<>5
5r5c9 - r6c9(5=4) - 4r5(c7=c4) - 4r7(c4=c7) - 5c7(r7=.)
Whip[4]: Supposing 5r4c1 would causes 5 to disappear in Row 5 => r4c1<>5
5r4c1 - r4c7(5=3) - 3r8(c7=c6) - 1c6(r8=r5) - 5r5(c6=.)
Naked Single: r4c1=9
Hidden Single: 9 in r5 => r5c9=9
Naked Single: r3c9=7
Hidden Single: 7 in c8 => r9c8=7
Hidden Single: 1 in c8 => r8c8=1
Hidden Single: 1 in c6 => r5c6=1
Naked Single: r5c5=2
Naked Single: r9c3=6
Locked Candidates 2 (Claiming): 5 in r5 => r6c3<>5
Whip[2]: Supposing 5r2c3 would causes 9 to disappear in Column 3 => r2c3<>5
5r2c3 - 7c3(r2=r8) - 9c3(r8=.)
stte
117 Steps!
Time elapsed: 729.3 ms
yzfwsf
 
Posts: 905
Joined: 16 April 2019

Re: Whip solver in javascript

Postby denis_berthier » Thu Aug 04, 2022 8:52 am

Mauricio wrote:I have updated the solver, now it can also solve using gBraids, I propose as a test case the following puzzle, gB=6 and not even a single vanilla Braid can be applied.
Code: Select all
001002003000030040200500100004006001070000080100900700002007006050080000300200900


I agree with yzfwsf: the puzzle can be solved without g-braids, in gW6.
Code: Select all
Resolution state after Singles and whips[1]:
   +----------------------+----------------------+----------------------+
   ! 456789 4689   1      ! 4678   4679   2      ! 568    5679   3      !
   ! 56789  689    56789  ! 1678   3      189    ! 2568   4      25789  !
   ! 2      34689  36789  ! 5      4679   489    ! 1      679    789    !
   +----------------------+----------------------+----------------------+
   ! 589    2389   4      ! 378    257    6      ! 235    2359   1      !
   ! 569    7      3569   ! 134    1245   1345   ! 23456  8      2459   !
   ! 1      2368   3568   ! 9      245    3458   ! 7      2356   245    !
   +----------------------+----------------------+----------------------+
   ! 489    1489   2      ! 134    1459   7      ! 3458   135    6      !
   ! 4679   5      679    ! 1346   8      1349   ! 234    1237   247    !
   ! 3      1468   678    ! 2      1456   145    ! 9      157    4578   !
   +----------------------+----------------------+----------------------+
213 candidates
176 g-candidates, 1127 csp-glinks and 680 non-csp glinks

Code: Select all
g-whip[4]: c5n1{r9 r5} - r5n2{c5 c789} - c8n2{r6 r8} - r8n1{c8 .} ==> r9c6≠1
g-whip[4]: c5n1{r9 r5} - r5n2{c5 c789} - c8n2{r6 r8} - r8n1{c8 .} ==> r7c4≠1
g-whip[4]: c8n2{r6 r8} - r8n1{c8 c456} - c5n1{r9 r5} - r5n2{c5 .} ==> r6c9≠2
g-whip[4]: c8n2{r6 r8} - r8n1{c8 c456} - c5n1{r9 r5} - r5n2{c5 .} ==> r4c7≠2
g-whip[4]: c8n2{r8 r456} - r5n2{c9 c5} - c5n1{r5 r789} - r8n1{c4 .} ==> r8c8≠7
g-whip[4]: c8n2{r8 r456} - r5n2{c9 c5} - c5n1{r5 r789} - r8n1{c4 .} ==> r8c8≠3
g-whip[4]: r5n2{c5 c789} - c8n2{r6 r8} - r8n1{c8 c456} - c5n1{r7 .} ==> r5c5≠5
g-whip[4]: r5n2{c5 c789} - c8n2{r6 r8} - r8n1{c8 c456} - c5n1{r7 .} ==> r5c5≠4
t-whip[5]: c8n3{r6 r7} - r7c4{n3 n4} - r9c6{n4 n5} - b9n5{r9c8 r7c7} - r4c7{n5 .} ==> r5c7≠3
t-whip[5]: r7c4{n4 n3} - r8n3{c6 c7} - r4c7{n3 n5} - r6c9{n5 n4} - c7n4{r5 .} ==> r7c5≠4, r7c2≠4, r7c1≠4
biv-chain[3]: r9c6{n5 n4} - r7n4{c4 c7} - b9n8{r7c7 r9c9} ==> r9c9≠5
whip[4]: r7n4{c7 c4} - r7n3{c4 c8} - b9n5{r7c8 r9c8} - r9c6{n5 .} ==> r7c7≠8
hidden-single-in-a-block ==> r9c9=8
t-whip[4]: c9n5{r6 r2} - r2n2{c9 c7} - b3n8{r2c7 r1c7} - c7n6{r1 .} ==> r5c7≠5
t-whip[4]: r4c7{n5 n3} - c8n3{r6 r7} - r7c4{n3 n4} - r7c7{n4 .} ==> r2c7≠5, r1c7≠5
t-whip[4]: c1n4{r8 r1} - r1n5{c1 c8} - b9n5{r7c8 r7c7} - r7n4{c7 .} ==> r8c6≠4, r8c4≠4
t-whip[4]: r1n5{c8 c1} - c1n4{r1 r8} - b9n4{r8c9 r7c7} - c7n5{r7 .} ==> r6c8≠5, r4c8≠5
g-whip[4]: b9n5{r7c7 r789c8} - r1n5{c8 c1} - c1n4{r1 r8} - b9n4{r8c7 .} ==> r7c7≠3
finned-x-wing-in-columns: n3{c7 c6}{r8 r4} ==> r4c4≠3
g-whip[4]: r1n5{c1 c8} - b9n5{r7c8 r7c7} - b9n4{r7c7 r8c789} - c1n4{r8 .} ==> r1c1≠6
g-whip[4]: r1n5{c1 c8} - b9n5{r7c8 r7c7} - b9n4{r7c7 r8c789} - c1n4{r8 .} ==> r1c1≠7
z-chain[3]: r1n7{c5 c8} - b9n7{r9c8 r8c9} - c1n7{r8 .} ==> r2c4≠7
biv-chain[4]: c1n7{r2 r8} - b7n4{r8c1 r9c2} - c2n1{r9 r7} - r7n8{c2 c1} ==> r2c1≠8
g-whip[4]: r1n5{c1 c8} - b9n5{r7c8 r7c7} - b9n4{r7c7 r8c789} - c1n4{r8 .} ==> r1c1≠8
g-whip[4]: r1n5{c1 c8} - b9n5{r7c8 r7c7} - b9n4{r7c7 r8c789} - c1n4{r8 .} ==> r1c1≠9
t-whip[5]: r3n4{c6 c2} - r3n3{c2 c3} - r3n8{c3 c6} - b5n8{r6c6 r4c4} - c4n7{r4 .} ==> r1c4≠4
t-whip[5]: r1n5{c8 c1} - c1n4{r1 r8} - c1n7{r8 r2} - c1n6{r2 r5} - b6n6{r5c7 .} ==> r1c8≠6
t-whip[6]: r4c7{n3 n5} - r7c7{n5 n4} - r8n4{c7 c1} - c1n7{r8 r2} - c1n6{r2 r5} - r6n6{c3 .} ==> r6c8≠3
whip[1]: b6n3{r4c8 .} ==> r4c2≠3
t-whip[4]: r2n2{c9 c7} - b3n8{r2c7 r1c7} - c7n6{r1 r5} - r6c8{n6 .} ==> r5c9≠2
biv-chain[3]: b3n5{r1c8 r2c9} - c9n2{r2 r8} - b9n7{r8c9 r9c8} ==> r9c8≠5, r1c8≠7
whip[1]: r1n7{c5 .} ==> r3c5≠7
whip[1]: r9n5{c6 .} ==> r7c5≠5
naked-triplets-in-a-row: r7{c1 c2 c5}{n9 n8 n1} ==> r7c8≠1
biv-chain[3]: c8n6{r6 r3} - c8n7{r3 r9} - r9c3{n7 n6} ==> r6c3≠6
z-chain[4]: r3c9{n9 n7} - r3c8{n7 n6} - r6n6{c8 c2} - c2n3{r6 .} ==> r3c2≠9
biv-chain[5]: r7c5{n9 n1} - c2n1{r7 r9} - b7n4{r9c2 r8c1} - r1c1{n4 n5} - r1c8{n5 n9} ==> r1c5≠9
biv-chain[4]: r1n9{c2 c8} - r1n5{c8 c1} - c1n4{r1 r8} - c1n7{r8 r2} ==> r2c1≠9
biv-chain[4]: r1n9{c2 c8} - b3n5{r1c8 r2c9} - r2n2{c9 c7} - c7n8{r2 r1} ==> r1c2≠8
t-whip[4]: r1n9{c2 c8} - r3c9{n9 n7} - r3c8{n7 n6} - r6n6{c8 .} ==> r1c2≠6
naked-triplets-in-a-row: r1{c1 c2 c8}{n5 n4 n9} ==> r1c5≠4
whip[1]: b2n4{r3c6 .} ==> r3c2≠4
z-chain[4]: r1c2{n9 n4} - b7n4{r9c2 r8c1} - r8n9{c1 c6} - b2n9{r2c6 .} ==> r3c3≠9
biv-chain[5]: c2n4{r9 r1} - r1n9{c2 c8} - r3c9{n9 n7} - c8n7{r3 r9} - r9c3{n7 n6} ==> r9c2≠6
finned-x-wing-in-columns: n6{c8 c2}{r6 r3} ==> r3c3≠6
biv-chain[4]: r9c2{n4 n1} - r7n1{c2 c5} - c5n9{r7 r3} - b2n4{r3c5 r3c6} ==> r9c6≠4
naked-single ==> r9c6=5
biv-chain[4]: b5n8{r6c6 r4c4} - b5n7{r4c4 r4c5} - b5n5{r4c5 r6c5} - r6c9{n5 n4} ==> r6c6≠4
z-chain[3]: c2n3{r3 r6} - r6c6{n3 n8} - c3n8{r6 .} ==> r3c2≠8
biv-chain[3]: r3n3{c2 c3} - r3n8{c3 c6} - r6c6{n8 n3} ==> r6c2≠3
hidden-single-in-a-column ==> r3c2=3
whip[1]: b1n6{r2c3 .} ==> r2c4≠6, r2c7≠6
finned-swordfish-in-rows: n6{r3 r9 r6}{c8 c5 c3} ==> r5c3≠6
biv-chain[3]: r9n6{c3 c5} - r3n6{c5 c8} - c8n7{r3 r9} ==> r9c3≠7
naked-single ==> r9c3=6
hidden-single-in-a-row ==> r8c4=6
hidden-single-in-a-row ==> r9c8=7
hidden-single-in-a-block ==> r8c8=1
whip[1]: b8n1{r9c5 .} ==> r5c5≠1
naked-single ==> r5c5=2
naked-pairs-in-a-row: r6{c5 c9}{n4 n5} ==> r6c3≠5
naked-pairs-in-a-row: r6{c3 c6}{n3 n8} ==> r6c2≠8
naked-pairs-in-a-column: c4{r1 r4}{n7 n8} ==> r2c4≠8
stte
denis_berthier
2010 Supporter
 
Posts: 4208
Joined: 19 June 2007
Location: Paris

Re: Whip solver in javascript

Postby yzfwsf » Sat Jan 13, 2024 4:01 pm

Code: Select all
4...6..7......46...3...2..17....85...154......2.95..........7.5..91...3...3.4..8.

Solution path as follow:
Code: Select all
1)r123c3==7
2)r6c9<>3, Braid[8]  n7r6{c9 c6} - n3{r6 r5}c1 - {n3 n2}r5c5 - {n3 n6}r5c6 - {n6 n9}r5c8 - {n6 n5}r8c6 - {n5 n9}r9c6 - n9r7{c5 .}
3)r9c1<>6, Braid[9]  n1r9{c1 c7} - n6{r8 r4}c2 - {n6 n4}r4c3 - {n4 n8}r6c3 - {n8 n3}r6c1 - {n3 n4}r6c7 - n4{r6 r8}c9 - n6r8{c9 c6} - n6{r7 .}c4
4)r1c6<>5, Braid[12]  n1r1{c6 c3} - n5{r3 r9}c4 - n1{r1 r6}c6 - n1{r6 r9}c7 - {n1 n2}r9c1 - n2{r7 r2}c3 - n7{r2 r3}c3 - n6r3{c3 c1} - n5r3{c1 c8} - {n5 n9}r2c8 - n9{r2 r5}c1 - n9{r5 .}c7
5)r789c6==5
6)r2c5<>8, gBraid[12]  n1{r2 r4}c5 - n1b2{r2c5 r1c6} - n9b2{r1c6 r3c5} - n3b2{r1c6 r123c4} - n3r4{c4 c9} - n3r2{c9 c4} - n7r2{c4 c3} - n1r2{c3 c1} - n1r9{c1 c7} - n9{r2 r5}c1 - n9{r5 r1}c7 - n3r1{c7 .}
7)r6c9<>6, Braid[12]  n7r6{c9 c6} - n6{r5 r7}c8 - n1{r6 r1}c6 - n1b9{r7c8 r9c7} - n9b9{r9c7 r9c9} - n9{r9 r7}c6 - n3{r7 r5}c6 - n3r4{c5 c9} - n6r5{c6 c1} - n3{r6 r1}c7 - n9r1{c7 c2} - n9{r3 .}c1
8)r7c1<>6, Braid[12]  n6{r9 r4}c2 - {n6 n4}r4c3 - n6{r4 r9}c4 - {n4 n8}r6c3 - n6r8{c6 c9} - {n8 n3}r6c1 - n4{r8 r6}c9 - {n4 n1}r6c7 - n1r9{c7 c1} - {n1 n2}r7c3 - {n2 n1}r1c3 - n1{r1 .}c6
9)r7c3<>6, Braid[12]  {n6 n4}r4c3 - n6{r9 r4}c2 - n6{r4 r9}c4 - n6r8{c6 c9} - n4{r8 r6}c9 - n7r6{c9 c6} - {n7 n5}r8c6 - {n5 n9}r9c6 - {n9 n2}r9c9 - {n2 n1}r9c7 - n1r6{c7 c8} - n6r6{c8 .}
10)r9c7<>2, gBraid[14]  n1{r9 r6}c7 - n1b9{r9c7 r7c8} - n1{r6 r1}c6 - n9b9{r7c8 r9c9} - n1{r1 r2}c3 - n9{r9 r7}c6 - n3{r7 r456}c6 - n3r4{c5 c9} - n3{r5 r1}c7 - n9r1{c7 c2} - n9r4{c2 c8} - n9r2{c8 c5} - n3r2{c5 c4} - n7r2{c4 .}
11)r4c8<>4, gBraid[19]  {n4 n6}r4c3 - n4r3{c8 c7} - n1r4{c8 c5} - n4r6{c9 c3} - {n6 n9}r4c2 - n6r3{c3 c1} - n6{r4 r789}c4 - {n4 n2}r8c7 - n1{r6 r1}c6 - n8b4{r6c3 r456c1} - {n8 n5}r8c1 - {n5 n7}r8c6 - n7b5{r6c6 r5c5} - n2b5{r5c5 r4c4} - {n2 n3}r4c9 - {n2 n6}r9c4 - {n6 n9}r9c9 - n9r1{c9 c7} - n3{r1 .}c7
12)r4c8<>9, gBraid[20]  n1r4{c8 c5} - n9r5{c9 c1} - n1{r6 r1}c6 - n3{r5 r6}c1 - n9{r1 r789}c6 - n9r7{c5 c6} - n3{r7 r5}c6 - n3r4{c4 c9} - n3{r5 r1}c7 - n2r4{c9 c4} - n6b5{r4c4 r6c6} - n7r6{c6 c9} - n4{r6 r8}c9 - {n4 n2}r8c7 - n2r9{c9 c1} - n1r9{c1 c7} - n9{r9 r3}c7 - n9{r3 r2}c5 - n3{r2 r7}c5 - n2r7{c5 .}
13)r2c9<>9, Braid[5]  n9r4{c9 c2} - n9r1{c2 c6} - n9r9{c6 c7} - n1{r1 r6}c6 - n1{r6 .}c7
14)r6c7<>1, gBraid[14]  {n1 n9}r9c7 - n1{r6 r1}c6 - n1{r4 r7}c8 - n9{r1 r7}c6 - n3{r7 r456}c6 - n3r4{c5 c9} - n9r4{c9 c2} - n4r4{c2 c3} - n4r7{c3 c2} - n6r7{c2 c4} - {n6 n2}r4c4 - {n2 n7}r5c5 - {n2 n7}r9c4 - n7{r8 .}c6
15) r9c7==1,  n1{. r9}c7
16)r1c2<>9, Whip[7]  n9r4{c2 c9} - n9{r5 r3}c7 - n9r2{c8 c5} - n1{r2 r4}c5 - n3r4{c5 c4} - n3b2{r2c4 r1c6} - n1{r1 .}c6
17)r1c3<>8, Whip[5]  {n8 n5}r1c2 - {n5 n9}r2c2 - n9{r3 r5}c1 - n3{r5 r6}c1 - n8b4{r6c1 .}
18)r2c3<>8, Whip[5]  {n8 n5}r1c2 - {n5 n9}r2c2 - n9{r3 r5}c1 - n3{r5 r6}c1 - n8b4{r6c1 .}
19)r3c3<>8, Whip[5]  {n8 n5}r1c2 - {n5 n9}r2c2 - n9{r3 r5}c1 - n3{r5 r6}c1 - n8b4{r6c1 .}
20)r8c2<>5, Whip[5]  {n5 n8}r1c2 - {n8 n9}r2c2 - n9r4{c2 c9} - n9r9{c9 c6} - n5r9{c6 .}
21)r2c1<>5, Whip[8]  {n5 n8}r1c2 - {n8 n9}r2c2 - n9{r3 r5}c1 - n3{r5 r6}c1 - n8b4{r6c1 r6c3} - {n8 n4}r6c7 - n4r3{c7 c8} - n5{r3 .}c8
22)r3c1<>5, Braid[9]  {n5 n8}r1c2 - n6r3{c1 c3} - {n8 n9}r2c2 - n9r4{c2 c9} - n9r9{c9 c6} - n9{r7 r3}c5 - n7r3{c5 c4} - n7r9{c4 c2} - n5r9{c2 .}
23)r789c1==5
24)r3c1<>8, Braid[9]  {n8 n5}r1c2 - n8b4{r6c1 r6c3} - {n5 n9}r2c2 - n9{r2 r5}c1 - n3{r5 r6}c1 - {n3 n4}r6c7 - {n4 n9}r3c7 - n9{r3 r7}c5 - n9{r7 .}c8
25)r4c2<>6, Whip[3]  n9{r4 r2}c2 - {n9 n6}r3c1 - n6{r3 .}c3
26)r789c2==6
27)r2c4<>8, Whip[5]  n8r3{c5 c7} - n4r3{c7 c8} - n5r3{c8 c4} - n5r1{c4 c2} - n8r1{c2 .}
28)r3c8<>9, Whip[8]  {n9 n6}r3c1 - {n6 n7}r3c3 - {n7 n8}r3c5 - n8{r1 r7}c4 - n8{r7 r6}c3 - {n8 n3}r6c1 - {n3 n9}r5c1 - n9{r5 .}c7
29)r8c5<>2, gBraid[9]  {n2 n4}r8c7 - n8r8{c5 c123} - n4r3{c7 c8} - n8{r7 r6}c3 - {n8 n3}r6c7 - n4r6{c3 c9} - n7r6{c9 c6} - {n7 n3}r5c5 - n3r4{c4 .}
30)r3c7<>9, Braid[9]  {n9 n6}r3c1 - n9r1{c9 c6} - n4r3{c7 c8} - n1{r1 r6}c6 - {n1 n6}r6c8 - n6r5{c9 c6} - n7b5{r5c6 r5c5} - {n7 n8}r3c5 - {n8 .}r8c5
31)r1c9<>8, Whip[9]  {n8 n5}r1c2 - {n5 n3}r1c4 - n3r2{c5 c9} - n3r4{c9 c5} - n1{r4 r2}c5 - {n1 n9}r1c6 - {n9 n2}r1c7 - {n2 n4}r8c7 - {n4 .}r3c7
32)r1c4<>3, Whip[9]  n3r2{c5 c9} - n3r4{c9 c5} - n1r4{c5 c8} - n1{r4 r2}c5 - {n1 n9}r1c6 - {n9 n2}r1c9 - n2r4{c9 c4} - n2{r5 r7}c5 - n9{r7 .}c5
33)r1c7<>8, Whip[2]  {n8 n5}r1c2 - {n5 .}r1c4
34)r2c4<>5, Braid[4]  {n5 n8}r1c4 - n5r3{c4 c8} - n4r3{c8 c7} - n8r3{c7 .}
35)r2c8<>9, Braid[8]  n5r2{c8 c2} - n9{r1 r5}c7 - {n5 n8}r1c2 - n8r2{c1 c9} - n8r5{c9 c1} - n3{r5 r6}c1 - n6{r6 r3}c1 - n9{r3 .}c1
36) r1c789==9
37)r789c6==9
38)r2c1<>2, Braid[4]  {n2 n1}r1c3 - {n1 n3}r1c6 - {n1 n7}r2c3 - {n7 .}r2c4
39)r789c1==2
40)r6c8<>4, Braid[5]  {n4 n5}r3c8 - n1r6{c8 c6} - {n5 n2}r2c8 - n1r1{c6 c3} - n2r1{c3 .}
41)r5c9<>6, Whip[5]  n6{r6 r7}c8 - n4{r7 r3}c8 - {n4 n8}r3c7 - n8{r2 r6}c9 - n7{r6 .}c9
42)r8c6<>6, Braid[4]  n6{r9 r4}c4 - n5{r8 r9}c6 - n9r9{c6 c9} - n6{r9 .}c9
43)r5c9<>9, Whip[5]  n9{r5 r7}c8 - n4{r7 r3}c8 - {n4 n8}r3c7 - n8{r2 r6}c9 - n7{r6 .}c9
44)r4c9<>6, gBraid[6]  {n6 n1}r6c8 - n6{r6 r7}c8 - n1{r6 r1}c6 - n9r7{c8 c6} - n3{r7 r456}c6 - n3r4{c5 .}
45)r789c9==6
46)r2c8<>2, gWhip[7]  n5{r2 r3}c8 - n4{r3 r7}c8 - n9r7{c8 c6} - n9b9{r7c8 r9c9} - {n9 n3}r1c9 - n3r4{c9 c456} - n3{r6 .}c6
47) r2c8==5,  {. n5}r2c8
48) r3c8==4,  {. n4}r3c8
49) r3c7==8,  {. n8}r3c7
50) r3c4==5,  n5r3{. c4}
51) r1c4==8,  {. n8}r1c4
52) r1c2==5,  {. n5}r1c2
53)r7c123==4
54)r5c9<>2, Whip[2]  n7{r5 r6}c9 - n8{r6 .}c9
55)r5c9<>3, Whip[2]  n7{r5 r6}c9 - n8{r6 .}c9
56)r6c9<>4, Whip[2]  n7{r6 r5}c9 - n8{r5 .}c9
57)r4c9<>2, Whip[3]  n2{r5 r7}c8 - {n2 n4}r8c7 - n4{r8 .}c9
58)r7c2<>6, Braid[3]  n6r8{c2 c9} - n4{r7 r4}c2 - n4{r4 .}c9
59)r7c456==6
60)r8c2<>8, Whip[2]  n6{r8 r9}c2 - n7{r9 .}c2
61)r8c1<>5, Braid[3]  {n5 n7}r8c6 - {n5 n2}r9c1 - {n2 .}r9c4
62) r8c6==5,  n5r8{. c6}
63) r9c1==5,  n5r9{. c1}
64)r2c3<>7, Whip[3]  n2r2{c3 c9} - n2r9{c9 c4} - n7{r9 .}c4
65) r3c3==7,  n7{. r3}c3
66) r3c5==9,  {. n9}r3c5
67) r3c1==6,  {. n6}r3c1
68)r2c1<>1, Whip[2]  {n1 n2}r1c3 - {n2 .}r2c3
69) r7c1==1,  n1{. r7}c1
70) r8c1==2,  n2{. r8}c1
71) r8c7==4,  {. n4}r8c7
72) r6c7==3,  {. n3}r6c7
73) r6c1==8,  {. n8}r6c1
74) r2c1==9,  {. n9}r2c1
75) r2c2==8,  {. n8}r2c2
76) r5c1==3,  {. n3}r5c1
77) r6c9==7,  {. n7}r6c9
78) r5c9==8,  {. n8}r5c9
79) r7c2==4,  {. n4}r7c2
80) r4c2==9,  {. n9}r4c2
81) r4c9==4,  {. n4}r4c9
82) r4c3==6,  {. n6}r4c3
83) r6c3==4,  {. n4}r6c3
84) r7c3==8,  {. n8}r7c3
85) r8c9==6,  {. n6}r8c9
86) r8c2==7,  {. n7}r8c2
87) r8c5==8,  {. n8}r8c5
88) r9c2==6,  {. n6}r9c2
89) r7c4==6,  n6{. r7}c4
90)r4c8<>2, Whip[2]  n2r5{c7 c5} - n2r7{c5 .}
91) r4c8==1,  {. n1}r4c8
92) r6c8==6,  {. n6}r6c8
93) r6c6==1,  {. n1}r6c6
94) r1c6==3,  {. n3}r1c6
95) r2c4==7,  {. n7}r2c4
96) r2c5==1,  {. n1}r2c5
97) r2c3==2,  {. n2}r2c3
98) r1c3==1,  {. n1}r1c3
99) r2c9==3,  {. n3}r2c9
100) r7c6==9,  {. n9}r7c6
101) r7c8==2,  {. n2}r7c8
102) r5c8==9,  {. n9}r5c8
103) r5c7==2,  {. n2}r5c7
104) r1c7==9,  {. n9}r1c7
105) r1c9==2,  {. n2}r1c9
106) r5c5==7,  {. n7}r5c5
107) r5c6==6,  {. n6}r5c6
108) r7c5==3,  {. n3}r7c5
109) r4c5==2,  {. n2}r4c5
110) r4c4==3,  {. n3}r4c4
111) r9c4==2,  {. n2}r9c4
112) r9c6==7,  {. n7}r9c6
113) r9c9==9,  {. n9}r9c9
Most difficult rule: gBraid[20]
Time elapsed: 786.506 seconds

My solver's solution path:
Code: Select all
Locked Candidates 1 (Pointing): 7 in b7 => r2c2<>7
Whip[9]: Supposing 3r6c9 will result in all candidates in cell r5c5 being impossible => r6c9<>3
3r6c9 - 7r6(c9=c6) - 1b5(p9=p2) - 3r4(c5=c4) - r5c6(3=6) - r8c6(6=5) - r9c6(5=9) - 9r7(c5=c8) - r5c8(9=2) - r5c5(2=.)
Whip[10]: Supposing 6r9c1 will result in 1 to disappear in Row 9 => r9c1<>6
6r9c1 - 6r3(c1=c3) - r4c3(6=4) - r6c3(4=8) - r6c1(8=3) - 6b4(p7=p2) - 6c4(r4=r7) - 6r8(c6=c9) - 4c9(r8=r6) - r6c7(4=1) - 1r9(c7=.)
Whip[13]: Supposing 6r7c1 will result in 1 to disappear in Column 6 => r7c1<>6
6r7c1 - 6r3(c1=c3) - r4c3(6=4) - r6c3(4=8) - r6c1(8=3) - 6b4(p7=p2) - 6c4(r4=r9) - 6r8(c6=c9) - 4c9(r8=r6) - r6c7(4=1) - 1r9(c7=c1) - r7c3(1=2) - r1c3(2=1) - 1c6(r1=.)
Whip[13]: Supposing 5r9c4 will result in 9 to disappear in Column 7 => r9c4<>5
5r9c4 - 5c6(r8=r1) - 1r1(c6=c3) - 1r2(c1=c5) - 1r4(c5=c8) - 1c7(r6=r9) - r9c1(1=2) - 2c3(r7=r2) - 7c3(r2=r3) - 6r3(c3=c1) - 5r3(c1=c8) - r2c8(5=9) - 9c1(r2=r5) - 9c7(r5=.)
Locked Candidates 2 (Claiming): 5 in c4 => r1c6<>5
Whip[15]: Supposing 6r7c3 will result in all candidates in cell r6c1 being impossible => r7c3<>6
6r7c3 - r4c3(6=4) - r6c3(4=8) - r3c3(8=7) - 6r3(c3=c1) - 6b4(p7=p2) - 6c4(r4=r9) - 6r8(c6=c9) - 4c9(r8=r6) - 7r6(c9=c6) - r8c6(7=5) - r9c6(5=9) - r9c9(9=2) - r9c7(2=1) - r6c7(1=3) - r6c1(3=.)
g-Whip[15]: Supposing 2r9c7 will result in 1 to disappear in Column 3 => r9c7<>2
2r9c7 - 1c7(r9=r6) - 1c6(r6=r1) - 1c5(r2=r4) - 1c8(r4=r7) - 9b9(p2=p9) - 9c6(r9=r7) - 3c6(r7=r56) - 3r4(c4=c9) - 3c7(r5=r1) - 9r1(c7=c2) - 9r4(c2=c8) - 9r2(c8=c5) - 3b2(p5=p4) - 7r2(c4=c3) - 1c3(r2=.)
g-Whip[18]: Supposing 8r2c5 will result in 1 to disappear in Row 9 => r2c5<>8
8r2c5 - 1c5(r2=r4) - 1c6(r6=r1) - 3b2(p3=p14) - 3r4(c4=c9) - 3r2(c9=c4) - r1c4(3=5) - 8c4(r1=r7) - r3c4(8=7) - 7r2(c4=c3) - 1b1(p6=p4) - r7c1(1=2) - r9c1(2=5) - 5c2(r8=r2) - 9r2(c2=c89) - 9r1(c9=c2) - 9r4(c2=c8) - 9c7(r5=r9) - 1r9(c7=.)
g-Whip[18]: Supposing 9r4c8 will result in 2 to disappear in Row 9 => r4c8<>9
9r4c8 - 1r4(c8=c5) - 1c6(r6=r1) - 9c6(r1=r79) - 9r7(c5=c6) - 3c6(r7=r56) - 3r4(c4=c9) - 2r4(c9=c4) - r5c5(2=7) - 7r6(c6=c9) - 4c9(r6=r8) - r8c7(4=2) - r8c5(2=8) - r3c5(8=9) - r2c5(9=3) - 3r1(c4=c7) - 9c7(r1=r9) - 1r9(c7=c1) - 2r9(c1=.)
Whip[5]: Supposing 9r2c9 will result in 1 to disappear in Column 6 => r2c9<>9
9r2c9 - 9r4(c9=c2) - 9r1(c2=c6) - 9r9(c6=c7) - 1c7(r9=r6) - 1c6(r6=.)
g-Whip[14]: Supposing 1r7c8 will result in all candidates in cell r8c6 being impossible => r7c8<>1
1r7c8 - 1r4(c8=c5) - 1c6(r6=r1) - 9c6(r1=r79) - 9r7(c5=c6) - 3c6(r7=r56) - 3r4(c4=c9) - 9r4(c9=c2) - 4c2(r4=r78) - 4r7(c3=c2) - 6r7(c2=c4) - r4c4(6=2) - r9c4(2=7) - r9c6(7=5) - r8c6(5=.)
Hidden Single: 1 in b9 => r9c7=1
Whip[5]: Supposing 5r8c2 will result in all candidates in cell r2c2 being impossible => r8c2<>5
5r8c2 - 5r9(c1=c6) - 9r9(c6=c9) - 9r4(c9=c2) - r1c2(9=8) - r2c2(8=.)
Whip[7]: Supposing 9r1c2 will result in 1 to disappear in Box 2 => r1c2<>9
9r1c2 - 9r4(c2=c9) - 9c7(r5=r3) - 9r2(c8=c5) - 1c5(r2=r4) - 3r4(c5=c4) - 3b2(p4=p3) - 1b2(p3=.)
Whip[5]: Supposing 8r1c3 will result in 8 to disappear in Box 4 => r1c3<>8
8r1c3 - r1c2(8=5) - r2c2(5=9) - 9c1(r3=r5) - 3c1(r5=r6) - 8b4(p7=.)
Whip[5]: Supposing 8r2c3 will result in 8 to disappear in Box 4 => r2c3<>8
8r2c3 - r1c2(8=5) - r2c2(5=9) - 9c1(r3=r5) - 3c1(r5=r6) - 8b4(p7=.)
Whip[5]: Supposing 8r3c3 will result in 8 to disappear in Box 4 => r3c3<>8
8r3c3 - r1c2(8=5) - r2c2(5=9) - 9c1(r3=r5) - 3c1(r5=r6) - 8b4(p7=.)
Whip[8]: Supposing 5r2c1 will result in 5 to disappear in Box 3 => r2c1<>5
5r2c1 - r1c2(5=8) - r2c2(8=9) - 9c1(r3=r5) - 3c1(r5=r6) - 8b4(p7=p9) - r6c7(8=4) - 4r3(c7=c8) - 5b3(p8=.)
Whip[9]: Supposing 8r3c1 will result in 9 to disappear in Column 8 => r3c1<>8
8r3c1 - r1c2(8=5) - r2c2(5=9) - 9c1(r2=r5) - 3c1(r5=r6) - 8b4(p7=p9) - r6c7(8=4) - r3c7(4=9) - 9c5(r3=r7) - 9c8(r7=.)
Whip[10]: Supposing 5r3c1 will result in 5 to disappear in Box 7 => r3c1<>5
5r3c1 - r1c2(5=8) - r2c2(8=9) - 9r4(c2=c9) - 9r9(c9=c6) - 9r1(c6=c7) - r3c8(9=4) - r3c7(4=8) - r3c4(8=7) - 7r9(c4=c2) - 5b7(p8=.)
Locked Candidates 2 (Claiming): 5 in c1 => r9c2<>5
Whip[3]: Supposing 6r4c2 will result in 6 to disappear in Column 3 => r4c2<>6
6r4c2 - 9c2(r4=r2) - r3c1(9=6) - 6c3(r3=.)
Locked Candidates 2 (Claiming): 6 in c2 => r8c1<>6
Whip[5]: Supposing 8r2c4 will result in 8 to disappear in Box 1 => r2c4<>8
8r2c4 - 8r3(c5=c7) - 4r3(c7=c8) - 5r3(c8=c4) - 5r1(c4=c2) - 8b1(p2=.)
Whip[8]: Supposing 9r3c8 will result in all candidates in cell r3c7 being impossible => r3c8<>9
9r3c8 - r3c1(9=6) - r3c3(6=7) - r3c5(7=8) - 8c4(r1=r7) - 8c3(r7=r6) - r6c1(8=3) - r6c7(3=4) - r3c7(4=.)
Whip[10]: Supposing 9r3c7 will result in 9 to disappear in Row 1 => r3c7<>9
9r3c7 - r3c1(9=6) - r3c3(6=7) - r3c5(7=8) - 8c4(r1=r7) - 8c3(r7=r6) - r6c1(8=3) - r5c1(3=9) - 9r4(c2=c9) - 9r9(c9=c6) - 9r1(c6=.)
Whip[8]: Supposing 2r8c5 will result in 4 to disappear in Box 3 => r8c5<>2
2r8c5 - r8c7(2=4) - r3c7(4=8) - 8c5(r3=r7) - 8c3(r7=r6) - 8r5(c1=c9) - 7c9(r5=r6) - 4r6(c9=c8) - 4b3(p8=.)
Whip[9]: Supposing 8r1c9 will result in all candidates in cell r3c7 being impossible => r1c9<>8
8r1c9 - r1c2(8=5) - r1c4(5=3) - 3r2(c5=c9) - 3r4(c9=c5) - 1c5(r4=r2) - r1c6(1=9) - r1c7(9=2) - r8c7(2=4) - r3c7(4=.)
Whip[9]: Supposing 3r1c4 will result in 9 to disappear in Box 8 => r1c4<>3
3r1c4 - 3r2(c5=c9) - 3r4(c9=c5) - 1r4(c5=c8) - 1r6(c8=c6) - r1c6(1=9) - r1c9(9=2) - 2r4(c9=c4) - 2c5(r5=r7) - 9b8(p2=.)
Whip[2]: Supposing 8r1c7 will result in all candidates in cell r1c4 being impossible => r1c7<>8
8r1c7 - r1c2(8=5) - r1c4(5=.)
Whip[4]: Supposing 5r2c4 will result in 5 to disappear in Box 3 => r2c4<>5
5r2c4 - r1c4(5=8) - 8r3(c5=c7) - 4r3(c7=c8) - 5b3(p8=.)
Whip[8]: Supposing 9r2c8 will result in 5 to disappear in Box 3 => r2c8<>9
9r2c8 - 9c7(r1=r5) - 9c1(r5=r3) - 6r3(c1=c3) - r4c3(6=4) - r6c3(4=8) - 8c7(r6=r3) - 4r3(c7=c8) - 5b3(p8=.)
Locked Candidates 1 (Pointing): 9 in b3 => r1c6<>9
Locked Candidates 1 (Pointing): 9 in b2 => r7c5<>9
Whip[4]: Supposing 2r2c1 will result in all candidates in cell r2c3 being impossible => r2c1<>2
2r2c1 - r1c3(2=1) - r1c6(1=3) - r2c4(3=7) - r2c3(7=.)
Locked Candidates 2 (Claiming): 2 in c1 => r7c3<>2
Whip[5]: Supposing 4r6c8 will result in 1 to disappear in Row 6 => r6c8<>4
4r6c8 - r3c8(4=5) - r2c8(5=2) - 2r1(c9=c3) - 1r1(c3=c6) - 1r6(c6=.)
Whip[7]: Supposing 6r4c9 will result in 6 to disappear in Box 9 => r4c9<>6
6r4c9 - r6c8(6=1) - 1c6(r6=r1) - 1c5(r2=r4) - 3r4(c5=c4) - 3c6(r6=r7) - 9r7(c6=c8) - 6b9(p2=.)
Whip[8]: Supposing 2r9c9 will result in 9 to disappear in Box 9 => r9c9<>2
2r9c9 - r8c7(2=4) - r3c7(4=8) - r2c9(8=3) - 3r1(c7=c6) - r2c4(3=7) - r9c4(7=6) - r7c6(6=9) - 9b9(p2=.)
Whip[7]: Supposing 8r8c2 will result in 9 to disappear in Row 9 => r8c2<>8
8r8c2 - r1c2(8=5) - r2c2(5=9) - 9r4(c2=c9) - r9c9(9=6) - 6r8(c9=c6) - 5c6(r8=r9) - 9r9(c6=.)
Whip[8]: Supposing 2r1c7 will result in all candidates in cell r1c3 being impossible => r1c7<>2
2r1c7 - 9r1(c7=c9) - 9b9(p9=p2) - 9c6(r7=r9) - 5r9(c6=c1) - 2r9(c1=c4) - 2r7(c5=c1) - 1r7(c1=c3) - r1c3(1=.)
Whip[4]: Supposing 2r8c9 will result in 2 to disappear in Box 3 => r8c9<>2
2r8c9 - r8c7(2=4) - 4r3(c7=c8) - 5c8(r3=r2) - 2b3(p5=.)
Whip[8]: Supposing 8r2c1 will result in 5 to disappear in Box 8 => r2c1<>8
8r2c1 - r1c2(8=5) - r2c2(5=9) - 9r4(c2=c9) - 9r9(c9=c6) - 9r7(c6=c8) - 2b9(p2=p4) - r8c1(2=5) - 5b8(p6=.)
Locked Candidates 1 (Pointing): 8 in b1 => r7c2<>8
Whip[2]: Supposing 9r2c2 will result in 8 to disappear in Box 1 => r2c2<>9
9r2c2 - 5c2(r2=r1) - 8b1(p2=.)
Hidden Single: 9 in c2 => r4c2=9
Locked Candidates 2 (Claiming): 4 in c2 => r7c3<>4
Whip[5]: Supposing 8r7c5 will result in all candidates in cell r8c5 being impossible => r7c5<>8
8r7c5 - r7c3(8=1) - 1c1(r7=r2) - 9r2(c1=c5) - r3c5(9=7) - r8c5(7=.)
Whip[4]: Supposing 3r7c6 will result in 9 to disappear in Box 8 => r7c6<>3
3r7c6 - r7c5(3=2) - 2r9(c4=c1) - 5r9(c1=c6) - 9b8(p9=.)
g-Whip[2]: Supposing 3r1c9 will result in 3 to disappear in Column 6 => r1c9<>3
3r1c9 - 3r4(c9=c45) - 3c6(r6=.)
Whip[3]: Supposing 3r5c5 will result in 3 to disappear in Row 4 => r5c5<>3
3r5c5 - 3r7(c5=c4) - 3r2(c4=c9) - 3r4(c9=.)
Whip[3]: Supposing 8r5c7 will result in 8 to disappear in Box 3 => r5c7<>8
8r5c7 - 9c7(r5=r1) - 3b3(p1=p6) - 8b3(p6=.)
Whip[3]: Supposing 8r3c5 will result in 8 to disappear in Box 3 => r3c5<>8
8r3c5 - 8r8(c5=c1) - 8r5(c1=c9) - 8b3(p6=.)
Hidden Single: 8 in c5 => r8c5=8
Whip[2]: Supposing 7r3c4 will result in 8 to disappear in Box 2 => r3c4<>7
7r3c4 - 5c4(r3=r1) - 8b2(p1=.)
Whip[2]: Supposing 2r7c1 will result in all candidates in cell r9c1 being impossible => r7c1<>2
2r7c1 - r8c1(2=5) - r9c1(5=.)
Whip[3]: Supposing 3r5c9 will result in 3 to disappear in Box 3 => r5c9<>3
3r5c9 - 3c1(r5=r6) - 3c6(r6=r1) - 3b3(p1=.)
Whip[3]: Supposing 2r4c9 will result in 3 to disappear in Box 6 => r4c9<>2
2r4c9 - r1c9(2=9) - r1c7(9=3) - 3b6(p7=.)
Whip[3]: Supposing 6r9c6 will result in 5 to disappear in Box 8 => r9c6<>6
6r9c6 - r9c2(6=7) - 7r8(c2=c6) - 5b8(p6=.)
Whip[4]: Supposing 3r5c7 will result in 3 to disappear in Box 3 => r5c7<>3
3r5c7 - r4c9(3=4) - r6c7(4=8) - 8c9(r5=r2) - 3b3(p6=.)
Whip[3]: Supposing 9r5c9 will result in 9 to disappear in Box 9 => r5c9<>9
9r5c9 - r5c7(9=2) - 2b9(p4=p2) - 9b9(p2=.)
Whip[3]: Supposing 4r7c8 will result in 9 to disappear in Column 8 => r7c8<>4
4r7c8 - r8c7(4=2) - r5c7(2=9) - 9c8(r5=.)
Hidden Single: 4 in r7 => r7c2=4
Whip[3]: Supposing 6r7c8 will result in 2 to disappear in Box 9 => r7c8<>6
6r7c8 - 9c8(r7=r5) - r5c7(9=2) - 2b9(p4=.)
Locked Candidates 2 (Claiming): 6 in r7 => r8c6<>6,r9c4<>6
Locked Candidates 2 (Claiming): 6 in c8 => r5c9<>6,r6c9<>6
Whip[3]: Supposing 3r2c5 will result in all candidates in cell r7c5 being impossible => r2c5<>3
3r2c5 - r2c4(3=7) - r9c4(7=2) - r7c5(2=.)
Whip[3]: Supposing 2r4c4 will result in all candidates in cell r9c4 being impossible => r4c4<>2
2r4c4 - r5c5(2=7) - 7b2(p8=p4) - r9c4(7=.)
Locked Candidates 2 (Claiming): 2 in c4 => r7c5<>2
Naked Single: r7c5=3
Whip[2]: Supposing 4r4c8 will result in 2 to disappear in Row 4 => r4c8<>4
4r4c8 - 1r4(c8=c5) - 2r4(c5=.)
Hidden Single: 4 in c8 => r3c8=4
Hidden Single: 5 in r3 => r3c4=5
Hidden Single: 5 in r1 => r1c2=5
Hidden Single: 8 in r1 => r1c4=8
Hidden Single: 5 in r2 => r2c8=5
Hidden Single: 8 in r3 => r3c7=8
Hidden Single: 8 in r2 => r2c2=8
Locked Candidates 1 (Pointing): 2 in b3 => r5c9<>2
Whip[2]: Supposing 6r4c8 will result in 2 to disappear in Row 4 => r4c8<>6
6r4c8 - 1r4(c8=c5) - 2r4(c5=.)
Whip[2]: Supposing 4r6c9 will result in all candidates in cell r4c9 being impossible => r6c9<>4
4r6c9 - r6c7(4=3) - r4c9(3=.)
Whip[3]: Supposing 6r6c6 will result in 6 to disappear in Box 6 => r6c6<>6
6r6c6 - r7c6(6=9) - 9c8(r7=r5) - 6b6(p5=.)
Whip[3]: Supposing 5r8c1 will result in all candidates in cell r9c1 being impossible => r8c1<>5
5r8c1 - r8c6(5=7) - r9c4(7=2) - r9c1(2=.)
Hidden Single: 5 in r8 => r8c6=5
Hidden Single: 7 in r8 => r8c2=7
Full House: r9c2=6
Hidden Single: 6 in r8 => r8c9=6
Hidden Single: 4 in r8 => r8c7=4
Full House: r8c1=2
Hidden Single: 4 in r6 => r6c3=4
Hidden Single: 4 in r4 => r4c9=4
Hidden Single: 3 in r4 => r4c4=3
Hidden Single: 3 in r2 => r2c9=3
Hidden Single: 3 in r1 => r1c6=3
Hidden Single: 1 in r1 => r1c3=1
Hidden Single: 2 in r1 => r1c9=2
Full House: r1c7=9
Hidden Single: 1 in r2 => r2c5=1
Hidden Single: 2 in r2 => r2c3=2
Hidden Single: 7 in r2 => r2c4=7
Full House: r2c1=9
Full House: r3c5=9
Hidden Single: 7 in r3 => r3c3=7
Full House: r3c1=6
Hidden Single: 1 in r4 => r4c8=1
Hidden Single: 2 in r4 => r4c5=2
Full House: r4c3=6
Full House: r7c3=8
Full House: r5c5=7
Hidden Single: 3 in r5 => r5c1=3
Full House


g-Braid[20] VS g-Whip[18]
yzfwsf
 
Posts: 905
Joined: 16 April 2019

Re: Whip solver in javascript

Postby denis_berthier » Sun Jan 14, 2024 6:09 am

yzfwsf wrote:
Code: Select all
4...6..7......46...3...2..17....85...154......2.95..........7.5..91...3...3.4..8.

g-Braid[20] VS g-Whip[18]


... which is obviously impossible, as any g-whip[n] is a special g-braid[n].

I checked with SudoRules that gw=18 is correct. As a result gB=20 is incorrect.
But this is not a new finding. Mauricio has already said (I can't find where) that there is a problem with his implementation of braids and g-braids. If I remember well, he provided an example with B < gB (which is also impossible).

I see that Mauricio has deleted the original link to his solver (in the 1st post of this thread). Is there another link to it?
.
denis_berthier
2010 Supporter
 
Posts: 4208
Joined: 19 June 2007
Location: Paris

Re: Whip solver in javascript

Postby yzfwsf » Mon Jan 15, 2024 7:06 am

His solver is a web page that only needs to be saved as a local copy to function properly.
yzfwsf
 
Posts: 905
Joined: 16 April 2019

Re: Whip solver in javascript

Postby denis_berthier » Mon Jan 15, 2024 7:12 am

can you provide the url?
denis_berthier
2010 Supporter
 
Posts: 4208
Joined: 19 June 2007
Location: Paris

Re: Whip solver in javascript

Postby yzfwsf » Mon Jan 15, 2024 7:18 am

I only have a local copy.
yzfwsf
 
Posts: 905
Joined: 16 April 2019

Re: Whip solver in javascript

Postby yzfwsf » Mon Feb 19, 2024 3:56 am

This solver uses the DFS algorithm, and given that the longest known Braid is no more than 30, there should be no stack overflow, and for some reason it is unable to obtain a solution to the following puzzle.
Code: Select all
010200000300004005006000700400108003000000090020305007008000000000080009050406010 9.9/9.9/2.6 + champagne

Code: Select all
1)r456c5==9
2)r9c123==9
3)r8c3<>7, gBraid[10]  n7r9{c1 c5} - n7r4{c5 c2} - n7{r5 r1}c1 - n9{r4 r123}c2 - n8r1{c1 c789} - {n9 n2}r2c3 - {n2 n6}r2c8 - n6r1{c9 c5} - n5r1{c5 c3} - n4{r1 .}c3
4)r3c9<>8, gBraid[11]  {n8 n2}r9c9 - n8{r3 r2}c4 - n1b3{r3c9 r2c7} - n9r2{c7 c123} - {n9 n4}r3c2 - n4{r1 r8}c3 - n2{r8 r2}c3 - {n2 n6}r2c8 - {n2 n5}r3c1 - n5r1{c3 c5} - n6r1{c5 .}
5)r5c1<>1, Braid[12]  n1{r6 r8}c3 - n1{r5 r3}c9 - n4{r8 r1}c3 - n4r3{c2 c8} - n2r3{c8 c1} - n5{r3 r1}c1 - n2{r2 r9}c3 - {n2 n8}r9c9 - n3{r9 r5}c3 - n5r5{c3 c7} - n8r5{c7 c2} - n8{r6 .}c1
6)r5c3<>7, Braid[12]  n7r4{c2 c5} - n3r5{c3 c2} - n7r9{c5 c1} - n9r9{c1 c3} - n7{r8 r2}c2 - {n9 n2}r2c3 - n8{r2 r3}c2 - n8{r3 r2}c4 - n9r2{c4 c7} - n1b3{r2c7 r3c9} - n2r3{c9 c8} - n4r3{c8 .}
7)r1c1<>9, gBraid[13]  n9{r3 r4}c2 - n9{r1 r2}c7 - n8r1{c1 c789} - {n9 n1}r6c3 - n1{r6 r5}c7 - n5r5{c7 c123} - {n5 n7}r4c3 - {n7 n2}r2c3 - {n2 n6}r2c8 - n6r1{c9 c5} - {n6 n2}r4c5 - {n2 n7}r5c6 - n7r1{c6 .}
8)r1c3<>9, gBraid[14]  {n9 n1}r6c3 - n9{r1 r2}c7 - n1r2{c7 c5} - n1{r2 r5}c7 - n5r5{c7 c123} - {n5 n7}r4c3 - n5{r4 r5}c3 - {n7 n2}r2c3 - n3r5{c3 c2} - n8{r5 r123}c2 - {n8 n5}r3c1 - {n5 n7}r1c1 - {n7 n3}r1c6 - {n3 .}r3c5
9)r1c7<>4, gBraid[17]  n4r3{c9 c2} - n9{r1 r2}c7 - n1r2{c7 c5} - n9b1{r2c3 r3c1} - {n9 n3}r3c6 - n9r9{c1 c3} - n3r1{c5 c8} - n9r6{c3 c5} - n4r6{c5 c8} - n8{r6 r123}c8 - {n8 n6}r1c9 - n8r1{c9 c1} - n8r6{c1 c7} - n1{r6 r5}c7 - n6b6{r5c7 r4c789} - n6{r4 r5}c5 - n4r5{c5 .}
10)r5c2<>6, Braid[17]  {n6 n7}r5c4 - n3r5{c2 c3} - n6{r5 r2}c4 - {n7 n2}r5c6 - n8{r2 r3}c4 - n8{r3 r2}c2 - {n8 n2}r2c8 - n2r3{c9 c1} - n2r4{c8 c7} - n2r8{c7 c3} - n1{r8 r6}c3 - n4{r8 r1}c3 - {n4 n9}r3c2 - n9r2{c3 c7} - n1{r2 r5}c7 - n5r5{c7 c1} - n5{r4 .}c3
11)r1c7<>6, gBraid[25]  n9r1{c7 c6} - n9{r1 r2}c7 - n1r2{c7 c5} - n6r2{c5 c4} - {n6 n7}r5c4 - n7b2{r2c4 r1c5} - {n7 n2}r5c6 - {n7 n5}r8c4 - n7r9{c5 c123} - n7{r8 r9}c1 - n9r9{c1 c3} - {n9 n1}r6c3 - n1{r6 r5}c7 - n5r5{c7 c123} - {n5 n7}r4c3 - {n7 n2}r2c3 - {n2 n8}r2c8 - {n8 n4}r1c9 - n8r1{c9 c1} - n8r6{c1 c7} - {n8 n6}r5c9 - {n6 n2}r7c9 - {n2 n3}r9c7 - {n3 n4}r8c7 - n4{r8 .}c3
Puzzle not solved.
Time elapsed: 1666.389 seconds

My solver get a solution with gB-Rating=26
Hidden Text: Show
Code: Select all
Whip[1]: => r1c5<>9
9r1c5 - 9b5{r4c5=.}
Whip[1]: => r2c5<>9
9r2c5 - 9b5{r4c5=.}
Whip[1]: => r3c5<>9
9r3c5 - 9b5{r4c5=.}
Whip[1]: => r7c5<>9
9r7c5 - 9b5{r4c5=.}
Whip[1]: => r9c5<>9
9r9c5 - 9b5{r4c5=.}
Whip[1]: => r7c1<>9
9r7c1 - 9r9{r9c1=.}
Whip[1]: => r7c2<>9
9r7c2 - 9r9{r9c1=.}
g-Braid[10]: => r8c3<>7
7r8c3 - 4c3{r8c3=r1c3} - 7r9{r9c1=r9c5} - 7r4{r4c5=r4c2} - 7b1{r2c2=r1c1} - 5b1{r1c1=r3c1} - 2b1{r3c1=r2c3} - 5b2{r3c4=r1c5} - 6r1{r1c5=r1c789} - r2c8{n6=n8} - 8r1{r1c7=.}
g-Braid[11]: => r3c9<>8
8r3c9 - r9c9{n8=n2} - 1b3{r3c9=r2c7} - 8b2{r3c4=r2c4} - 9r2{r2c4=r2c23} - r3c2{n9=n4} - 4b7{r7c2=r8c3} - 2c3{r8c3=r2c3} - r2c8{n2=n6} - r3c1{n2=n5} - 5b2{r3c4=r1c5} - 6r1{r1c5=.}
Braid[12]: => r5c3<>7
7r5c3 - 3b4{r5c3=r5c2} - 7b5{r5c4=r4c5} - 7r9{r9c5=r9c1} - 7b1{r1c1=r2c2} - 9b7{r9c1=r9c3} - r2c3{n9=n2} - 8c2{r2c2=r3c2} - 8b2{r3c4=r2c4} - 9r2{r2c4=r2c7} - 1b3{r2c7=r3c9} - 2b3{r3c9=r3c8} - 4r3{r3c8=.}
Braid[12]: => r5c1<>1
1r5c1 - 1b7{r7c1=r8c3} - 1c9{r5c9=r3c9} - 4c3{r8c3=r1c3} - 4b3{r1c7=r3c8} - 2r3{r3c8=r3c1} - 2b7{r7c1=r9c3} - r9c9{n2=n8} - 3c3{r9c3=r5c3} - 5r5{r5c3=r5c7} - 8r5{r5c7=r5c2} - 8b1{r2c2=r1c1} - 5c1{r1c1=.}
g-Braid[13]: => r1c1<>9
9r1c1 - 9b3{r1c7=r2c7} - 9c2{r2c2=r4c2} - 8r1{r1c1=r1c789} - r6c3{n9=n1} - 1c7{r6c7=r5c7} - 5b6{r5c7=r4c78} - r4c3{n5=n7} - r2c3{n7=n2} - r2c8{n2=n6} - 6b2{r2c4=r1c5} - r4c5{n6=n2} - r5c6{n2=n7} - 7r1{r1c6=.}
g-Braid[14]: => r1c3<>9
9r1c3 - r6c3{n9=n1} - 4b1{r1c3=r3c2} - 9b3{r1c7=r2c7} - 1b3{r2c7=r3c9} - 1b6{r5c9=r5c7} - 5b6{r5c7=r4c78} - r4c3{n5=n7} - 5c3{r4c3=r5c3} - 3b4{r5c3=r5c2} - 8c2{r5c2=r2c2} - 7b1{r2c2=r1c1} - r1c6{n7=n3} - r3c5{n3=n5} - 5r1{r1c5=.}
g-Braid[16]: => r1c7<>4
4r1c7 - 4b1{r1c3=r3c2} - 9b3{r1c7=r2c7} - 1b3{r2c7=r3c9} - 1b2{r3c5=r2c5} - 9c2{r2c2=r4c2} - 9b5{r4c5=r6c5} - 4r6{r6c5=r6c8} - 8c8{r6c8=r123c8} - r1c9{n8=n6} - 6b2{r1c5=r2c4} - r5c4{n6=n7} - r5c6{n7=n2} - r5c9{n2=n8} - 8c2{r5c2=r2c2} - 7r2{r2c2=r2c3} - 7r4{r4c3=.}
g-Braid[17]: => r5c2<>6
6r5c2 - r5c4{n6=n7} - 3b4{r5c2=r5c3} - 6c4{r5c4=r2c4} - r5c6{n7=n2} - 8b2{r2c4=r3c4} - 8c2{r3c2=r2c2} - r2c8{n8=n2} - 2b6{r4c8=r4c7} - 2r8{r8c7=r8c13} - 2c3{r9c3=r8c3} - 4c3{r8c3=r1c3} - r3c2{n4=n9} - 5c3{r1c3=r4c3} - 5b6{r4c8=r5c7} - 1r5{r5c7=r5c9} - 1b3{r3c9=r2c7} - 9r2{r2c7=.}
g-Braid[26]: => r5c9<>2
2r5c9 - r5c6{n2=n7} - r9c9{n2=n8} - r5c4{n7=n6} - r5c5{n6=n4} - r6c5{n4=n9} - r6c3{n9=n1} - 1b6{r6c7=r5c7} - 1r2{r2c7=r2c5} - 6b2{r2c5=r1c5} - 8r5{r5c7=r5c12} - 6c9{r1c9=r7c9} - 7b2{r1c5=r2c4} - r6c1{n8=n6} - r1c9{n6=n4} - 8b2{r2c4=r3c4} - 4c3{r1c3=r8c3} - 5b2{r3c4=r3c5} - 3c5{r3c5=r79c5} - 6b7{r8c1=r8c2} - 3r8{r8c2=r8c78} - r9c7{n3=n2} - 2c3{r9c3=r2c3} - r3c1{n2=n9} - r9c1{n9=n7} - 7c2{r7c2=r4c2} - 9c2{r4c2=.}
Braid[13]: => r9c3<>2
2r9c3 - 2b1{r2c3=r3c1} - 9b7{r9c3=r9c1} - 2c9{r3c9=r7c9} - 7r9{r9c1=r9c5} - 2b8{r7c5=r8c6} - r5c6{n2=n7} - 7b2{r1c6=r2c4} - r2c3{n7=n9} - r2c2{n9=n8} - r3c2{n8=n4} - r5c2{n8=n3} - 3b7{r7c2=r8c3} - 4c3{r8c3=.}
g-Braid[11]: => r2c3<>9
9r2c3 - 2c3{r2c3=r8c3} - 4c3{r8c3=r1c3} - r3c2{n4=n8} - r2c2{n8=n7} - 8b2{r3c4=r2c4} - r5c2{n7=n3} - 6c4{r2c4=r5c4} - 3b7{r7c2=r9c3} - 7c4{r5c4=r78c4} - 7r9{r9c5=r9c1} - 9r9{r9c1=.}
Braid[9]: => r5c1<>7
7r5c1 - 7b5{r5c4=r4c5} - 7r9{r9c5=r9c3} - 7b1{r1c3=r2c2} - 9b7{r9c3=r9c1} - 9b1{r3c1=r3c2} - 8c2{r3c2=r5c2} - 3b4{r5c2=r5c3} - 5b4{r5c3=r4c3} - 9r4{r4c3=.}
Braid[11]: => r3c8<>8
8r3c8 - 8b2{r3c4=r2c4} - 6c4{r2c4=r5c4} - 8c2{r2c2=r5c2} - r5c1{n8=n5} - 5b1{r1c1=r1c3} - 4c3{r1c3=r8c3} - 2c3{r8c3=r2c3} - r3c1{n2=n9} - 2b3{r2c7=r3c9} - 1b3{r3c9=r2c7} - 9r2{r2c7=.}
g-Braid[12]: => r8c3<>3
3r8c3 - 2c3{r8c3=r2c3} - 3b4{r5c3=r5c2} - 4c3{r8c3=r1c3} - 8b4{r5c2=r56c1} - 8r1{r1c1=r1c789} - r2c8{n8=n6} - r1c9{n6=n8} - r1c8{n8=n3} - r1c7{n3=n9} - r1c6{n9=n7} - r2c5{n7=n1} - r2c7{n1=.}
Braid[11]: => r1c7<>8
8r1c7 - 8b9{r9c7=r9c9} - 9b3{r1c7=r2c7} - 1b3{r2c7=r3c9} - 2c9{r3c9=r7c9} - r9c7{n2=n3} - 3c3{r9c3=r5c3} - 1r5{r5c3=r5c7} - 5r5{r5c7=r5c1} - r1c1{n5=n7} - r2c2{n7=n8} - 8r5{r5c2=.}
g-Braid[13]: => r7c2<>7
7r7c2 - 7b9{r7c8=r8c8} - 7c1{r7c1=r1c1} - 7b8{r8c4=r9c5} - r2c3{n7=n2} - 8r1{r1c1=r1c89} - r2c8{n8=n6} - r2c5{n6=n1} - r2c7{n1=n9} - r1c7{n9=n3} - r1c6{n3=n9} - r3c6{n9=n3} - 3b9{r7c7=r7c8} - 3c5{r7c5=.}
g-Braid[13]: => r8c2<>7
7r8c2 - r8c4{n7=n5} - 7b9{r8c8=r7c8} - 7c1{r7c1=r1c1} - r2c3{n7=n2} - 8r1{r1c1=r1c89} - r2c8{n8=n6} - 6b2{r2c4=r1c5} - 6b5{r4c5=r5c4} - 5r1{r1c5=r1c3} - 6c9{r5c9=r7c9} - 4b1{r1c3=r3c2} - 4r7{r7c2=r7c7} - 5r7{r7c7=.}
g-Braid[10]: => r5c7<>4
4r5c7 - 4b5{r5c5=r6c5} - 5b6{r5c7=r4c78} - 9b5{r6c5=r4c5} - r4c3{n9=n7} - 7c2{r4c2=r2c2} - 9c2{r2c2=r3c2} - 4b1{r3c2=r1c3} - 5c3{r1c3=r5c3} - 3b4{r5c3=r5c2} - 8c2{r5c2=.}
Braid[12]: => r5c2<>3
3r5c2 - 3b7{r7c2=r9c3} - 9b7{r9c3=r9c1} - 7r9{r9c1=r9c5} - r8c4{n7=n5} - r7c4{n5=n9} - r3c4{n9=n8} - 8c2{r3c2=r2c2} - 9b1{r2c2=r3c2} - 4b1{r3c2=r1c3} - 9b2{r3c6=r1c6} - 7r1{r1c6=r1c1} - 7b7{r7c1=.}
Hidden Single: 3 in r5 => r5c3=3
Whip[1]: => r6c7<>1
1r6c7 - 1r5{r5c7=.}
Whip[4]: => r8c8<>4
4r8c8 - 4c3{r8c3=r1c3} - 5c3{r1c3=r4c3} - 5c8{r4c8=r7c8} - 7c8{r7c8=.}
Whip[5]: => r2c7<>2
2r2c7 - r2c3{n2=n7} - r9c3{n7=n9} - r4c3{n9=n5} - 5b6{r4c7=r5c7} - 1c7{r5c7=.}
Braid[6]: => r3c2<>8
8r3c2 - r5c2{n8=n7} - r2c2{n7=n9} - 7b5{r5c4=r4c5} - 9r4{r4c5=r4c3} - 5c3{r4c3=r1c3} - 4b1{r1c3=.}
Braid[6]: => r1c3<>4
4r1c3 - r3c2{n4=n9} - 5c3{r1c3=r4c3} - 9r4{r4c3=r4c5} - 7r4{r4c5=r4c2} - r2c2{n7=n8} - r5c2{n8=.}
Hidden Single: 4 in c3 => r8c3=4
Hidden Single: 4 in c2 => r3c2=4
Hidden Single: 1 in c3 => r6c3=1
Hidden Single: 2 in c3 => r2c3=2
Whip[2]: => r4c2<>6
6r4c2 - r7c2{n6=n3} - r8c2{n3=.}
Whip[1]: => r7c1<>6
6r7c1 - 6c2{r7c2=.}
Whip[1]: => r8c1<>6
6r8c1 - 6c2{r7c2=.}
Braid[3]: => r5c5<>6
6r5c5 - 4b5{r5c5=r6c5} - 6b4{r5c1=r6c1} - 9r6{r6c1=.}
Whip[3]: => r5c7<>8
8r5c7 - 5r5{r5c7=r5c1} - 6b4{r5c1=r6c1} - 8r6{r6c1=.}
Whip[3]: => r6c1<>8
8r6c1 - r5c2{n8=n7} - r5c4{n7=n6} - 6c1{r5c1=.}
Whip[1]: => r5c9<>8
8r5c9 - 8r6{r6c7=.}
Braid[3]: => r6c7<>6
6r6c7 - r6c1{n6=n9} - 6r4{r4c7=r4c5} - 9r4{r4c5=.}
Braid[3]: => r6c8<>6
6r6c8 - r6c1{n6=n9} - 6r4{r4c7=r4c5} - 9r4{r4c5=.}
Whip[2]: => r5c9<>4
4r5c9 - r6c7{n4=n8} - r6c8{n8=.}
Hidden Single: 4 in r5 => r5c5=4
Whip[3]: => r1c9<>6
6r1c9 - r2c8{n6=n8} - r6c8{n8=n4} - 4r1{r1c8=.}
Whip[3]: => r2c7<>6
6r2c7 - 1b3{r2c7=r3c9} - r5c9{n1=n6} - 6c4{r5c4=.}
Braid[4]: => r1c9<>8
8r1c9 - r2c8{n8=n6} - 4c9{r1c9=r7c9} - 6c9{r7c9=r5c9} - 6c4{r5c4=.}
Hidden Single: 8 in c9 => r9c9=8
Naked Single: r1c9=4
Braid[3]: => r1c7<>3
3r1c7 - r3c8{n3=n2} - r9c7{n3=n2} - 2c9{r7c9=.}
Whip[1]: => r7c8<>3
3r7c8 - 3c7{r7c7=.}
Whip[1]: => r8c8<>3
3r8c8 - 3c7{r7c7=.}
Whip[3]: => r7c7<>3
3r7c7 - r7c2{n3=n6} - r7c9{n6=n2} - r9c7{n2=.}
Braid[4]: => r2c7<>8
8r2c7 - r2c8{n8=n6} - 1b3{r2c7=r3c9} - r5c9{n1=n6} - 6c4{r5c4=.}
Hidden Single: 8 in c7 => r6c7=8
Hidden Single: 4 in r6 => r6c8=4
Hidden Single: 4 in r7 => r7c7=4
Whip[3]: => r7c8<>2
2r7c8 - 7b9{r7c8=r8c8} - r8c4{n7=n5} - 5r7{r7c4=.}
Whip[3]: => r7c8<>6
6r7c8 - 7b9{r7c8=r8c8} - r8c4{n7=n5} - 5r7{r7c4=.}
Whip[3]: => r8c1<>7
7r8c1 - r8c4{n7=n5} - 5b9{r8c7=r7c8} - 7c8{r7c8=.}
Whip[3]: => r8c6<>7
7r8c6 - r8c4{n7=n5} - 5b9{r8c7=r7c8} - 7c8{r7c8=.}
Whip[3]: => r8c8<>6
6r8c8 - 6c9{r7c9=r5c9} - r5c4{n6=n7} - 7r8{r8c4=.}
Whip[4]: => r1c7<>6
6r1c7 - 6b9{r8c7=r7c9} - r5c9{n6=n1} - 1b3{r3c9=r2c7} - 9c7{r2c7=.}
Naked Single: r1c7=9
Naked Single: r2c7=1
Hidden Single: 1 in r5 => r5c9=1
Hidden Single: 6 in c9 => r7c9=6
Full House: r3c9=2
Hidden Single: 6 in r8 => r8c2=6
Hidden Single: 3 in c2 => r7c2=3
Naked Single: r3c8=3
Whip[1]: => r4c8<>6
6r4c8 - 6c7{r4c7=.}
Whip[2]: => r8c6<>2
2r8c6 - 2b9{r8c7=r9c7} - 2r5{r5c7=.}
Whip[4]: => r1c6<>7
7r1c6 - r2c5{n7=n6} - 6b5{r4c5=r5c4} - 7r5{r5c4=r5c2} - 7r2{r2c2=.}
stte
yzfwsf
 
Posts: 905
Joined: 16 April 2019


Return to Software