Bent Almost Restricted N(aked)-Set {Barn}

Advanced methods and approaches for solving Sudoku puzzles

Re: Bent Almost Restricted N(aked)-Set {Barn}

Postby rjamil » Wed Nov 22, 2017 6:52 pm

Hi,

I am trying to find a way to check whether two cells lying within same row or column or box or band or stack or not within 9x9 grid (as Pascal language has functions to manipulate union and intersection between arrays; and I am unaware of the same functions equivalent in either C or C++ languages).

I propose to add another 32 bit integer value in each cell's 20 peers array that will represent cell's band, stack, row, column and box respectively as follows:
Hidden Text: Show
Code: Select all
Cell Row Col Box Bnd Stk PBd  PSk  PRow        PCol        PBox        Binary                            Peer
00   1   1   1   0   0   00   00   000000001   000000001   000000001   0000000000001000000001000000001   262657
01   1   2   1   0   0   00   00   000000001   000000010   000000001   0000000000001000000010000000001   263169
02   1   3   1   0   0   00   00   000000001   000000100   000000001   0000000000001000000100000000001   264193
03   1   4   2   0   1   00   01   000000001   000001000   000000010   0001000000001000001000000000010   134483970
04   1   5   2   0   1   00   01   000000001   000010000   000000010   0001000000001000010000000000010   134488066
05   1   6   2   0   1   00   01   000000001   000100000   000000010   0001000000001000100000000000010   134496258
06   1   7   3   0   2   00   10   000000001   001000000   000000100   0010000000001001000000000000100   268730372
07   1   8   3   0   2   00   10   000000001   010000000   000000100   0010000000001010000000000000100   268763140
08   1   9   3   0   2   00   10   000000001   100000000   000000100   0010000000001100000000000000100   268828676
09   2   1   1   0   0   00   00   000000010   000000001   000000001   0000000000010000000001000000001   524801
10   2   2   1   0   0   00   00   000000010   000000010   000000001   0000000000010000000010000000001   525313
11   2   3   1   0   0   00   00   000000010   000000100   000000001   0000000000010000000100000000001   526337
12   2   4   2   0   1   00   01   000000010   000001000   000000010   0001000000010000001000000000010   134746114
13   2   5   2   0   1   00   01   000000010   000010000   000000010   0001000000010000010000000000010   134750210
14   2   6   2   0   1   00   01   000000010   000100000   000000010   0001000000010000100000000000010   134758402
15   2   7   3   0   2   00   10   000000010   001000000   000000100   0010000000010001000000000000100   268992516
16   2   8   3   0   2   00   10   000000010   010000000   000000100   0010000000010010000000000000100   269025284
17   2   9   3   0   2   00   10   000000010   100000000   000000100   0010000000010100000000000000100   269090820
18   3   1   1   0   0   00   00   000000100   000000001   000000001   0000000000100000000001000000001   1049089
19   3   2   1   0   0   00   00   000000100   000000010   000000001   0000000000100000000010000000001   1049601
20   3   3   1   0   0   00   00   000000100   000000100   000000001   0000000000100000000100000000001   1050625
21   3   4   2   0   1   00   01   000000100   000001000   000000010   0001000000100000001000000000010   135270402
22   3   5   2   0   1   00   01   000000100   000010000   000000010   0001000000100000010000000000010   135274498
23   3   6   2   0   1   00   01   000000100   000100000   000000010   0001000000100000100000000000010   135282690
24   3   7   3   0   2   00   10   000000100   001000000   000000100   0010000000100001000000000000100   269516804
25   3   8   3   0   2   00   10   000000100   010000000   000000100   0010000000100010000000000000100   269549572
26   3   9   3   0   2   00   10   000000100   100000000   000000100   0010000000100100000000000000100   269615108
27   4   1   4   1   0   01   00   000001000   000000001   000001000   0100000001000000000001000001000   538968584
28   4   2   4   1   0   01   00   000001000   000000010   000001000   0100000001000000000010000001000   538969096
29   4   3   4   1   0   01   00   000001000   000000100   000001000   0100000001000000000100000001000   538970120
30   4   4   5   1   1   01   01   000001000   000001000   000010000   0101000001000000001000000010000   673189904
31   4   5   5   1   1   01   01   000001000   000010000   000010000   0101000001000000010000000010000   673194000
32   4   6   5   1   1   01   01   000001000   000100000   000010000   0101000001000000100000000010000   673202192
33   4   7   6   1   2   01   10   000001000   001000000   000100000   0110000001000001000000000100000   807436320
34   4   8   6   1   2   01   10   000001000   010000000   000100000   0110000001000010000000000100000   807469088
35   4   9   6   1   2   01   10   000001000   100000000   000100000   0110000001000100000000000100000   807534624
36   5   1   4   1   0   01   00   000010000   000000001   000001000   0100000010000000000001000001000   541065736
37   5   2   4   1   0   01   00   000010000   000000010   000001000   0100000010000000000010000001000   541066248
38   5   3   4   1   0   01   00   000010000   000000100   000001000   0100000010000000000100000001000   541067272
39   5   4   5   1   1   01   01   000010000   000001000   000010000   0101000010000000001000000010000   675287056
40   5   5   5   1   1   01   01   000010000   000010000   000010000   0101000010000000010000000010000   675291152
41   5   6   5   1   1   01   01   000010000   000100000   000010000   0101000010000000100000000010000   675299344
42   5   7   6   1   2   01   10   000010000   001000000   000100000   0110000010000001000000000100000   809533472
43   5   8   6   1   2   01   10   000010000   010000000   000100000   0110000010000010000000000100000   809566240
44   5   9   6   1   2   01   10   000010000   100000000   000100000   0110000010000100000000000100000   809631776
45   6   1   4   1   0   01   00   000100000   000000001   000001000   0100000100000000000001000001000   545260040
46   6   2   4   1   0   01   00   000100000   000000010   000001000   0100000100000000000010000001000   545260552
47   6   3   4   1   0   01   00   000100000   000000100   000001000   0100000100000000000100000001000   545261576
48   6   4   5   1   1   01   01   000100000   000001000   000010000   0101000100000000001000000010000   679481360
49   6   5   5   1   1   01   01   000100000   000010000   000010000   0101000100000000010000000010000   679485456
50   6   6   5   1   1   01   01   000100000   000100000   000010000   0101000100000000100000000010000   679493648
51   6   7   6   1   2   01   10   000100000   001000000   000100000   0110000100000001000000000100000   813727776
52   6   8   6   1   2   01   10   000100000   010000000   000100000   0110000100000010000000000100000   813760544
53   6   9   6   1   2   01   10   000100000   100000000   000100000   0110000100000100000000000100000   813826080
54   7   1   7   2   0   10   00   001000000   000000001   001000000   1000001000000000000001001000000   1090519616
55   7   2   7   2   0   10   00   001000000   000000010   001000000   1000001000000000000010001000000   1090520128
56   7   3   7   2   0   10   00   001000000   000000100   001000000   1000001000000000000100001000000   1090521152
57   7   4   8   2   1   10   01   001000000   000001000   010000000   1001001000000000001000010000000   1224740992
58   7   5   8   2   1   10   01   001000000   000010000   010000000   1001001000000000010000010000000   1224745088
59   7   6   8   2   1   10   01   001000000   000100000   010000000   1001001000000000100000010000000   1224753280
60   7   7   9   2   2   10   10   001000000   001000000   100000000   1010001000000001000000100000000   1358987520
61   7   8   9   2   2   10   10   001000000   010000000   100000000   1010001000000010000000100000000   1359020288
62   7   9   9   2   2   10   10   001000000   100000000   100000000   1010001000000100000000100000000   1359085824
63   8   1   7   2   0   10   00   010000000   000000001   001000000   1000010000000000000001001000000   1107296832
64   8   2   7   2   0   10   00   010000000   000000010   001000000   1000010000000000000010001000000   1107297344
65   8   3   7   2   0   10   00   010000000   000000100   001000000   1000010000000000000100001000000   1107298368
66   8   4   8   2   1   10   01   010000000   000001000   010000000   1001010000000000001000010000000   1241518208
67   8   5   8   2   1   10   01   010000000   000010000   010000000   1001010000000000010000010000000   1241522304
68   8   6   8   2   1   10   01   010000000   000100000   010000000   1001010000000000100000010000000   1241530496
69   8   7   9   2   2   10   10   010000000   001000000   100000000   1010010000000001000000100000000   1375764736
70   8   8   9   2   2   10   10   010000000   010000000   100000000   1010010000000010000000100000000   1375797504
71   8   9   9   2   2   10   10   010000000   100000000   100000000   1010010000000100000000100000000   1375863040
72   9   1   7   2   0   10   00   100000000   000000001   001000000   1000100000000000000001001000000   1140851264
73   9   2   7   2   0   10   00   100000000   000000010   001000000   1000100000000000000010001000000   1140851776
74   9   3   7   2   0   10   00   100000000   000000100   001000000   1000100000000000000100001000000   1140852800
75   9   4   8   2   1   10   01   100000000   000001000   010000000   1001100000000000001000010000000   1275072640
76   9   5   8   2   1   10   01   100000000   000010000   010000000   1001100000000000010000010000000   1275076736
77   9   6   8   2   1   10   01   100000000   000100000   010000000   1001100000000000100000010000000   1275084928
78   9   7   9   2   2   10   10   100000000   001000000   100000000   1010100000000001000000100000000   1409319168
79   9   8   9   2   2   10   10   100000000   010000000   100000000   1010100000000010000000100000000   1409351936
80   9   9   9   2   2   10   10   100000000   100000000   100000000   1010100000000100000000100000000   1409417472

How to check two cells lying either same band, stack, row, column and/or box, bit wise checking as follows:
Hidden Text: Show
Code: Select all
IF cell1[peer] & constant = cell2[peer] & constant THEN
same
ELSE
different

Where constant is as follows:
Band            Stack           Row             Col     Box
1610612736      402653184       133955584       261632  511

IF cell1[peer] & (133955584 | 511) = cell2[peer] & (133955584 | 511) THEN
same row and box, i.e., mini-row
ELSE IF cell1[peer] & 133955584 = cell2[peer] & 133955584 THEN
same row but not box
ELSE IF cell1[peer] & 511 = cell2[peer] & 511 THEN
same box but not row
ELSE
neither same row nor box

R. Jamil
rjamil
 
Posts: 147
Joined: 15 October 2014
Location: Karachi, Pakistan

Previous

Return to Advanced solving techniques