Denis Berhtier Whip 4dot1 in BigSudoku Python Code

Advanced methods and approaches for solving Sudoku puzzles

Denis Berhtier Whip 4dot1 in BigSudoku Python Code

Postby RichardGoodrich » Mon Nov 11, 2013 2:29 am

OK, here are the 4 Berthier Grids I get from Denis Bethier's 4.1 Example for Whips on his URL:

http://denis.berthier.pagesperso-orange.fr/HLS/Whips.html

Code: Select all
_whips_4dot1 = '.16..5....7.4.9.....98....4.4.....29...54.....2..6.1.8..1....3.......6.5....8....'


The entries in square brackets [] are the givens. The solved squares will be in parenthesis ()

Code: Select all
RC=N =>
  2348    [1]     [6]   |  237     237     [5]   | 23789    789     237   
  2358    [7]     2358  |  [4]     123     [9]   |  2358    1568    1236 
  235      35     [9]   |  [8]     1237   12367  |  2357    1567    [4]   
------------------------+------------------------+------------------------
 135678   [4]     3578  |  137     137     1378  |  357     [2]     [9]   
 136789   3689    378   |  [5]     [4]    12378  |   37      67     367   
  3579    [2]     357   |  379     [6]      37   |  [1]     457     [8]   
------------------------+------------------------+------------------------
2456789   5689    [1]   |  2679    2579    2467  | 24789    [3]      27   
 234789   389    23478  | 12379   12379   12347  |  [6]    14789    [5]   
2345679   3569   23457  | 123679   [8]    123467 |  2479    1479    127   

RN=C =>
  [2]    14579   14579  |   1      [6]     [3]   | 45789    178      78   
  589    13579   13579  |  [4]     1378     89   |  [2]     1378    [6]   
  568     1567   12567  |  [9]     1278     68   |  5678    [4]     [3]   
------------------------+------------------------+------------------------
  1456    [8]    134567 |  [2]     137      1    | 134567   136     [9]   
   16      6     123679 |  [5]     [4]     1289  | 136789   1236     12   
  [7]     [2]     1346  |   8      138     [5]   | 13468    [9]      14   
------------------------+------------------------+------------------------
  [3]    145679   [8]   |  167     125     1246  | 145679   127    12457 
  4568   13456   123456 |  1368    [9]     [7]   | 134568   1238   12458 
  4689   134679  12346  | 13678    123     1246  |1346789   [5]    12478 

NC=R =>
    45      [1]      [7]   |   489      2348    34589  |   [6]      2389      29   
  123789    [6]      289   |   1789    12378    35789  |  12379     [4]      1279 
 12345689   3589    245689 |  14689    12348    345689 |  12345     [7]      125   
---------------------------+---------------------------+---------------------------
   1789     [4]       89   |   [2]      [5]      789   |    79      689      [3]   
  234679    379      2469  |   [5]       7       [1]   |   234      236      [8]   
   4579     579      [1]   |    79      [6]      379   |   [8]      235       25   
---------------------------+---------------------------+---------------------------
  456789    [2]     45689  |  146789   13478   3456789 |  134579   135689    1579 
  124578    578      2458  |   [3]      [9]       45   |   127      128      [6]   
  56789     5789     [3]   |   6789      78      [2]   |   179      189      [4]   

BN=S =>
   [2]      1467    14678  |    1       4678     [3]   |   [5]      146      [9]   
   589     12589    12589  |   [4]      [3]       9    |   1289     [7]      [6]   
   568     13467    13467  |   [9]      4578     568   |  12378     1245      12   
---------------------------+---------------------------+---------------------------
    14      [8]    1345679 |   [2]      1379     145   |  134679   13456     457   
   1236      6      123679 |   [5]      [4]      [8]   |  123679     36       7   
   [7]      [2]      146   |    8        18       56   |  14568     [9]      [3]   
---------------------------+---------------------------+---------------------------
   [3]     14679    456789 |  14679    12789     1278  |  14679    12456    124578
  45679   12345679  45679  |   369       2       1379  | 12345679   [8]     12457 
   589      1379     [2]   |   1578     [6]      [4]   |  135789     15      1578 


Here are the first batch of singleton solutions I get:

Code: Select all
s001 bns r1c1=n4, b1n4=s1, r1n4=c1, n4c1=r1
s002 bns r3c6=n6, b2n6=s9, r3n6=c6, n6c6=r3
s003 bns r5c6=n2, b5n2=s6, r5n2=c6, n2c6=r5
s004 bns r4c6=n8, b5n8=s3, r4n8=c6, n8c6=r4
s005 bns r6c4=n9, b5n9=s7, r6n9=c4, n9c4=r6
s006 bns r6c8=n4, b6n4=s8, r6n4=c8, n4c8=r6
s007 bns r4c7=n5, b6n5=s1, r4n5=c7, n5c7=r4
s008 bns r7c5=n5, b8n5=s2, r7n5=c5, n5c5=r7
s009 rnc r4c1=n6, r4n6=c1, n6c1=r4, b4n6=s1
s010 bns r5c1=n1, b4n1=s4, r5n1=c1, n1c1=r5
s011 rnc r5c2=n9, r5n9=c2, n9c2=r5, b4n9=s5
s012 rnc r5c3=n8, r5n8=c3, n8c3=r5, b4n8=s6
s013 ncr r8c5=n9, n9c5=r8, r8n9=c5, b8n9=s5


Which updates the four grids to this:

Code: Select all
RC=N =>
 (4)   [1]   [6]  | 237   237   [5]  |23789  789   237 
 2358  [7]   235  | [4]   123   [9]  | 238   1568  1236
 235    35   [9]  | [8]   1237  (6)  | 237   157   [4] 
------------------+------------------+------------------
 (6)   [4]    37  | 137   137   (8)  | (5)   [2]   [9] 
 (1)   (9)   (8)  | [5]   [4]   (2)  |  37    67   367 
 357   [2]   357  | (9)   [6]    37  | [1]   (4)   [8] 
------------------+------------------+------------------
 2789   68   [1]  | 267   (5)    47  |24789  [3]    27 
 2378   38   2347 | 1237  (9)   1347 | [6]   178   [5] 
23579  356  23457 |12367  [8]   1347 | 2479  179   127 

RN=C =>
  [2]     4579    4579  |  (1)     [6]     [3]   | 45789     78      78   
  589    13579   13579  |  [4]     138      89   |  [2]     178     [6]   
   58     157     1257  |  [9]     128     (6)   |  578     [4]     [3]   
------------------------+------------------------+------------------------
   45     [8]     345   |  [2]     (7)     (1)   |  345     (6)     [9]   
  (1)     (6)      79   |  [5]     [4]      89   |  789     (3)     (2)   
  [7]     [2]     136   |  (8)      13     [5]   |  136     [9]     (4)   
------------------------+------------------------+------------------------
  [3]     1479    [8]   |   67     (5)      24   | 14679    127      17   
  468     134    12346  |   36     [9]     [7]   | 13468    128     (5)   
  4689   13479   12346  |  367     123      24   |1346789   [5]     178   

NC=R =>
 (5)   [1]   [7]  | 489   234    89  | [6]   2389   29 
23789  [6]   289  | 1789  123   (5)  |12379  [4]   1279
23689  389  24689 | 1489  1234  689  | 1235  [7]   125 
------------------+------------------+------------------
 (1)   [4]    89  | [2]   [5]   789  |  79   (6)   [3] 
 2369   39   269  | [5]   (7)   [1]  | (4)    23   [8] 
 (4)    79   [1]  |  79   [6]   (3)  | [8]    25    25 
------------------+------------------+------------------
 6789  [2]   4689 |14789  134   6789 |13579 13589  1579
 278    78   (5)  | [3]   [9]   (4)  | 127   128   [6] 
  79   (5)   [3]  | (6)   (8)   [2]  | 179    19   [4] 

BN=S =>
  [2]    467    4678 |  (1)    4678   [3]  |  [5]     46    [9] 
   58    1258   1258 |  [4]    [3]    (9)  |  128    [7]    [6] 
  568   13467  13467 |  [9]    4578   568  | 12378   1245    12 
---------------------+---------------------+---------------------
  (4)    [8]    379  |  [2]    379    (1)  |  379    (6)    (5) 
   12    (6)    129  |  [5]    [4]    [8]  |  129    (3)    (7) 
  [7]    [2]     46  |  (8)    (1)     56  |  456    [9]    [3] 
---------------------+---------------------+---------------------
  [3]   14679  456789| 14679  12789   1278 | 14679  12456  124578
  4679  134679  4679 |  369    (2)    1379 | 134679  [8]    (5) 
  589    1379   [2]  |  1578   [6]    [4]  | 135789   15    1578


Now what I think will be interesting is what chains might I come up with these 4 grids to start with instead of
just the customary RCN grid. Of course there are some other simpler patterns that might POP-OUT first!

Let me know what you think?
Big1952
RichardGoodrich
 
Posts: 70
Joined: 12 December 2012
Location: Josephine, TX

Re: Denis Berhtier Whip 4dot1 in BigSudoku Python Code

Postby RichardGoodrich » Mon Nov 11, 2013 4:13 pm

Must be bug in code because it missed r2c1=n8h (the h on end is for hidden). Asserting that I get the following grids:

s14 r2c1=n8h (last h means hidden)

RC=N =>
Code: Select all
 (4)   [1]   [6]  | 237   237   [5]  |23789  789   237 
 (8)   [7]   235  | [4]   123   [9]  |  23   156   1236
 235    35   [9]  | [8]   1237  1367 | 237   1567  [4] 
------------------+------------------+------------------
 (6)   [4]    37  | (1)    37   (8)  | (5)   [2]   [9] 
 (1)   (9)   (8)  | [5]   [4]   (2)  |  37    67   367 
 357   [2]   357  | 379   [6]    37  | [1]   (4)   [8] 
------------------+------------------+------------------
 279    68   [1]  | 267   (5)   467  |24789  [3]    27 
 237    38   2347 | 237   (9)   1347 | [6]   178   [5] 
23579  356  23457 | 2367  [8]  13467 | 2479  179   127 


RN=C =>
Code: Select all
  [2]     4579    4579  |  (1)     [6]     [3]   | 45789     78      78   
  589     3579    3579  |  [4]      38      89   |  [2]     (1)     [6]   
  568     157    12567  |  [9]     128      68   |  5678    [4]     [3]   
------------------------+------------------------+------------------------
  (4)     [8]      35   |  [2]     (7)     (1)   |   35     (6)     [9]   
  (1)     (6)      79   |  [5]     [4]      89   |  789     (3)     (2)   
  [7]     [2]     1346  |  (8)      13     [5]   |  1346    [9]      14   
------------------------+------------------------+------------------------
  [3]     1479    [8]   |   67     (5)     246   | 14679     27     147   
   68     134    12346  |   36     [9]     [7]   | 13468     28     (5)   
  689    13479   12346  |  367     123     246   |1346789   [5]     1478 


NC=R =>
Code: Select all
 (5)   [1]   [7]  | (4)    23   389  | [6]   2389   29 
 3789  [6]   289  | 1789  123   (5)  |12379  [4]   1279
 3689  389  24689 | 1689  1234  3689 | 1235  [7]   125 
------------------+------------------+------------------
 (1)   [4]    89  | [2]   [5]   789  |  79   (6)   [3] 
 369    39   269  | [5]   (7)   [1]  | (4)    23   [8] 
 (4)    79   [1]  |  79   [6]   379  | [8]   235    25 
------------------+------------------+------------------
 6789  [2]   4689 |16789  134  36789 |13579 13589  1579
 (2)    78   (5)  | [3]   [9]   (4)  |  17    18   [6] 
 679   (5)   [3]  | 679   (8)   [2]  | 179    19   [4] 


BN=S =>
Code: Select all
  [2]     67    678  |  (1)    678    [3]  |  [5]    (4)    [9] 
  589   12589  12589 |  [4]    [3]     9   |  1289   [7]    [6] 
  568   13467  13467 |  [9]    4578   568  | 12378   1245    12 
---------------------+---------------------+---------------------
  (4)    [8]    379  |  [2]    379    (1)  |  379    (6)    (5) 
  (1)    (6)    279  |  [5]    [4]    [8]  |  279    (3)     7   
  [7]    [2]     46  |  (8)    (1)     56  |  456    [9]    [3] 
---------------------+---------------------+---------------------
  [3]   14679  456789| 14679  12789   1278 | 14679  12456  124578
  4679  134679  4679 |  369    (2)    1379 | 134679  [8]    (5) 
  589    1379   [2]  |  1578   [6]    [4]  | 135789   15    1578


Now here is where the utility of the four grids start paying off:
In the RN=C grid we see: r1n89=c78 which when translated to
the RC=N grid shows this: r1c78 = n89

Clearly that is a hidden pair leading to the following eliminations and produces
the following in my trace:

01 HPiR r1c78=n89 (HPiR = Hidden Pair in Row)
02 ------------------>
03 s15 r1c7-n2
04 s16 r1c7-n3
05 s17 r1c7-n7
06 s18 r1c8-n7
07 ----------------<

My trace just above notes a condition as shown on line 01. Then using the dashed
lines of line 02 and line 07 brackets the grid operations on lines 03-06 which are
eliminations where the '-' is used instead of '<>' because I can enter r1c7-n2
for example (and it likes - vs <>) and the 4 grids are updated.

Would I have found the hidden pair 89 in the RC=N grid - maybe but it was
glaring in the RN=C grid. Now the grids are:

RC=N =>
Code: Select all
 (4)   [1]   [6]  | 237   237   [5]  |  89    89   237 
 (8)   [7]   235  | [4]   123   [9]  |  23   156   1236
 235    35   [9]  | [8]   1237  1367 | 237   1567  [4] 
------------------+------------------+------------------
 (6)   [4]    37  | (1)    37   (8)  | (5)   [2]   [9] 
 (1)   (9)   (8)  | [5]   [4]   (2)  |  37    67   367 
 357   [2]   357  | 379   [6]    37  | [1]   (4)   [8] 
------------------+------------------+------------------
 279    68   [1]  | 267   (5)   467  |24789  [3]    27 
 237    38   2347 | 237   (9)   1347 | [6]   178   [5] 
23579  356  23457 | 2367  [8]  13467 | 2479  179   127 


RN=C =>
Code: Select all
  [2]     459     459   |  (1)     [6]     [3]   |  459      78      78   
  589     3579    3579  |  [4]      38      89   |  [2]     (1)     [6]   
  568     157    12567  |  [9]     128      68   |  5678    [4]     [3]   
------------------------+------------------------+------------------------
  (4)     [8]      35   |  [2]     (7)     (1)   |   35     (6)     [9]   
  (1)     (6)      79   |  [5]     [4]      89   |  789     (3)     (2)   
  [7]     [2]     1346  |  (8)      13     [5]   |  1346    [9]      14   
------------------------+------------------------+------------------------
  [3]     1479    [8]   |   67     (5)     246   | 14679     27     147   
   68     134    12346  |   36     [9]     [7]   | 13468     28     (5)   
  689    13479   12346  |  367     123     246   |1346789   [5]     1478 


NC=R =>
Code: Select all
 (5)   [1]   [7]  | (4)    23   389  | [6]   2389   29 
 3789  [6]   289  | 1789  123   (5)  | 2379  [4]   1279
 3689  389  24689 | 1689  1234  3689 | 235   [7]   125 
------------------+------------------+------------------
 (1)   [4]    89  | [2]   [5]   789  |  79   (6)   [3] 
 369    39   269  | [5]   (7)   [1]  | (4)    23   [8] 
 (4)    79   [1]  |  79   [6]   379  | [8]   235    25 
------------------+------------------+------------------
 6789  [2]   4689 |16789  134  36789 | 3579  3589  1579
 (2)    78   (5)  | [3]   [9]   (4)  |  17    18   [6] 
 679   (5)   [3]  | 679   (8)   [2]  | 179    19   [4] 


BN=S =>
Code: Select all
  [2]     67    678  |  (1)    678    [3]  |  [5]    (4)    [9] 
  589   12589  12589 |  [4]    [3]     9   |  1289   [7]    [6] 
  568    3467   3467 |  [9]    4578   568  |  378    1245    12 
---------------------+---------------------+---------------------
  (4)    [8]    379  |  [2]    379    (1)  |  379    (6)    (5) 
  (1)    (6)    279  |  [5]    [4]    [8]  |  279    (3)     7   
  [7]    [2]     46  |  (8)    (1)     56  |  456    [9]    [3] 
---------------------+---------------------+---------------------
  [3]   14679  456789| 14679  12789   1278 | 14679  12456  124578
  4679  134679  4679 |  369    (2)    1379 | 134679  [8]    (5) 
  589    1379   [2]  |  1578   [6]    [4]  | 135789   15    1578
Big1952
RichardGoodrich
 
Posts: 70
Joined: 12 December 2012
Location: Josephine, TX


Return to Advanced solving techniques