Prelims
a) 11(2) cage at R1C1 = {29/38/47/56}, no 1
b) 11(2) cage at R1C2 = {29/38/47/56}, no 1
c) 11(2) cage at R1C8 = {29/38/47/56}, no 1
d) 10(2) cage at R1C9 = {19/28/37/46}, no 5
e) R23C5 = {17/26/35}, no 4,8,9
f) R5C12 = {29/38/47/56}, no 1
g) R5C89 = {19/28/37/46}, no 5
h) R78C5 = {17/26/35}, no 4,8,9
i) 5(2) cage at R8C1 = {14/23}
j) 5(2) cage at R8C2 = {14/23}
k) 10(2) cage at R8C8 = {19/28/37/46}, no 5
l) 4(2) cage at R8C9 = {13}
m) 9(3) cage at R1C6 = {126/135/234}, no 7,8,9
n) 21(3) cage at R3C1 = {489/579/678}, no 1,2,3
o) 10(3) cage at R4C2 = {127/136/145/235}, no 8,9
p) 19(3) cage at R6C1 = {289/379/469/478/568}, no 1
q) 20(3) cage at R8C6 = {389/479/569/578}, no 1,2
r) 14(4) cage at R6C6 = {1238/1247/1256/1346/2345}, no 9
Steps resulting from Prelims
1a. Naked quad {1234} in R89C12, locked for N7
1b. Naked pair {13} in 4(2) cage at R8C9, locked for N9, clean-up: no 7,9 in 10(2) cage at R8C8
1c. 1 in N1 only in R123C3, locked for C3
1d. Min R7C12 = 11 -> max R6C1 = 8
2. 45 rule on C12 1 outie R5C3 = 3, clean-up: no 8 in R5C12, no 7 in R5C89
2a. 1 in N4 only in 10(3) cage at R4C2 = {136}, 1,6 locked for C2 and N4, clean-up: no 5 in R12C1, no 5 in R5C12, no 4 in R89C1
2b. 4 in N7 only in R89C2, locked for C2, clean-up: no 7 in R12C1, no 7 in R5C1
3. 45 rule on C89 1 outie R5C7 = 1, clean-up: no 9 in R5C89
3a. Killer pair 2,4 in R5C12 and R5C89, locked for R5
3b. 5 in R5 only in R5C456, locked for N5
4. 45 rule on C6789 3(2+1) innies R19C7 + R5C6 = 22
4a. Min R19C7 = 13, no 2,3 in R19C7
5. 45 rule on R5 2 outies R46C5 = 7 = {16/34}
5a. R23C5 = {17/26/35}, R78C5 = {17/26/35} -> combined cage R2378C5 = {17}{26}/{17}{35}/{26}{35}
5b. R46C5 = {34} (cannot be {16} which clashes with R2378C5), locked for C5 and N5, clean-up: no 5 in R2378C5
5c. Naked quad {1267} in R2378C5, locked for C5
6. 45 rule on R89 4(3+1) innies R8C5 + R9C357 = 31 can only be R8C5 = 7, R9C357 = 24 = {789}, locked for R9, R7C5 = 1, clean-up: no 2 in R8C8
6a. Naked pair {26} in R23C5, locked for N2
7. 9(3) cage at R1C6 = {135/234} (cannot be {126} because 2,6 only in R2C7), no 6
7a. 2 of {234} must be in R2C7 -> no 4 in R2C7
7b. 9(3) cage = {135/234}, CPE no 3 in R2C4
8. 3 in R7 only in R7C46, locked for N8
8a. 20(3) cage at R8C6 = {569} (only remaining combination), 9 locked for R8
8b. 20(3) cage = {569}, CPE no 5,6 in R8C4
9. 15(3) cage at R8C3 = {258/456}
9a. 8 of {258} must be in R8C3 -> no 8 in R8C4
9b. R8C4 = {24} -> no 2,4 in R9C4
9c. Naked pair {56} in R9C46, locked for R9 and N8 -> R8C6 = 9, R9C5 = 8, clean-up: no 4 in R8C8
10. 45 rule on C1234 3(2+1) innies R19C3 + R5C4 = 15
10a. Min R5C4 + R9C3 = 12 -> R1C3 = {12}
10b. Min R19C3 = 8 -> max R5C4 = 7
11. 25(4) cage at R6C3 = {2689/3589/3679/4579/4678} (cannot be {1789} because R7C4 only contains 2,3,4), no 1
11a. R7C4 = {234} -> no 2,4 in R6C34
12. 45 rule on N1 3 innies R123C3 = 1 outie R4C1 + 2
12a. Min R123C3 = 7 -> min R4C1 = 5
12b. Max R123C3 = 11, no 9 in R23C3
13. 3 in N1 only in one of the 11(2) cages = {38} (locking cages), 8 locked for N1
13a. Grouped X-Wing for 3 in 11(2) cages and 9(3) cage at R1C6, no other 3 in R12, clean-up: no 8 in 11(2) cage at R1C8, no 7 in 10(2) cage at R1C9
14. R19C7 + R5C6 = 22 (step 4), max R5C6 + R7C9 = 17 -> min R1C7 = 5
14a. 45 rule on whole grid 6 innies R19C357 = 39, R9C357 = 24 -> R1C357 = 15 = {159/258} (cannot be {168/267} because 6,7,8 only in R1C7), no 6,7, 5 locked for R1, clean-up: no 6 in R2C1, no 6 in R2C9
14b. 45 rule on R12 4(3+1) innies R1C357 + R2C5 = 21, R1C357 = 15 -> R2C5 = 6, R3C5 = 2, clean-up: no 4 in R1C9
15. 14(4) cage at R6C6 = {1238/1247/1256/1346/2345} -> R6C6 = {12}
16. 45 rule on R1234 6(3+3) innies R1C357 + R4C258 = 26, R1C357 = 15 -> R4C258 = 11 = {137/146/236} (cannot be {128/245} because 2,5,8 only in R4C8) -> R4C8 = {267}
16a. 12(3) cage at R4C8 = {129/147/156} -> R6C8 = {459}
16b. 45 rule on R6789 6(3+3) innies R6C258 + R9C357 = 38, R9C357 = 24 -> R6C258 = 14 = {149/356}
16c. 9 of {149} must be in R6C8 -> no 4 in R6C8, clean-up: no 7 in R4C8
16d. R4C258 = {146/236}, 6 locked for R4
16e. Killer pair 2,6 in R4C8 and R5C89, locked for N6
17. 27(5) cage at R4C5 = {34569/34578}
17a. 8 of {34578} must be in R5C6 -> no 7 in R5C6
18. 7 in C6 only in R34C6, locked for 24(4) cage at R3C6, no 7 in R34C7
18a. 24(4) cage contains 7 = {2679/3579/3678/4578}, no 1
19. Hidden killer pair 1,2 in R4C46 and R6C6 for N5, R6C6 = {12} -> R4C46 must contain one of 1,2
19a. Killer pair 1,2 in R4C258 and R4C46, locked for R4
20. 2 in C3 only in R12C3, locked for N1, clean-up: no 9 in 11(2) cages at R1C1 and R1C2
20a. 9 in N1 only in R3C12, locked for R3 and 21(3) cage at R3C1, no 9 in R4C1
20b. 21(3) cage contains 9 = {489/579}, no 6
21. R123C3 = R4C1 + 2 (step 12)
21a. R4C1 = {578} -> R123C3 = 7,9,10 must contain 1,2 = {124/126/127}, no 5
22. 45 rule on N9 3 innies R789C7 = 1 outie R6C9 + 14
22a. Min R6C9 = 3 -> min R789C7 = 17 but cannot be [269] which clashes with 10(2) cage at R8C8 -> no 2 in R7C7
23. R2C7 = 2 (hidden single in C7) -> R12C6 = 7 = {34} -> R67C6 = [12], R4C4 = 2 (hidden single in N5), R46C2 = [16], R4C8 = 6, R6C8 = 5 (cage sum), R8C8 = 8 -> R9C9 = 2, R5C8 = 2 (hidden single in C8) -> R5C9 = 8
23a. R9C2 = 4 (hidden single in R9) -> R8C1 = 1, R9C1 = 3, R8C2 = 2, R8C9 = 3, R9C8 = 1
23b. Clean-ups: no 8 in R12C2, no 9 in R1C8, no 9 in R1C9, no 5,9 in R2C9, no 9 in R5C12
24. Naked pair {47} in 11(2) cage at R1C8, locked for N3 -> R2C8 = 9, R1C9 = 1, R3C8 = 3 -> R34C9 = 14 = [59], R13C7 = [86], R34C6 = {78} -> R4C7 = 3 (cage sum)
and the rest is naked singles.
I loved the way the zero cells could be used for 45s!