Thank you again. I don't think a vertical one would be necessary since it would be the same but rotated 90/270º.
There's something else that draws attention here, though.
First I'll explain how I made my solver.
I transformed a little bit the puzzle so the rows are alined, but the boxes are the ones with strange shape instead. Everything is preserved except the display of the puzzle itself (I simply moved up the even columns), later I'll explain why.
The result is a Jigsaw Sudoku, but a special one because of the white row both in top/bottom.
Note: I changed the way indexes work to fit the rows.
Ok, now the
interesting part. As you can see there are 2 types of tabs, upper tabs (purple) and lower tabs (green).
That's very helpful to eliminate candidates because once a number is set to be placed in one type of tab, in the other affected rows it must be in the same type. Otherwise there would always be a row that can't contain that number, which is against sudoku rules.
I added 3 restrictions based on this:
1- If a candidate is solved in any of the upper tabs, we can eliminate it as candidate in all lower tabs. Same can be applied on lower tabs.
2- If a candidate isn't found in any of the upper tabs of one row, that means the candidate must be on the lower tabs, so we can eliminate it in all other upper tabs. Same can be applied on lower tabs.
3- If a candidate can't be placed in at least 3 different columns of the 4 possible among the upper tabs it must be in the lower tabs instead. Same can be applied on lower tabs, but considering there are 5 possible columns in that case.
This is a good shortcut to eliminate candidates in early stages but sadly I haven't been able to make a solvable puzzle that isn't still solvable without this trick
It takes much longer but still reaches the correct answer, I'm not sure that would always be the case