Comment by dllu
16 hours ago
Neat. Surprisingly, there are 388 solutions, and a lot of them look rather unintuitive.
........
...Q....
........
........
.....Q..
........
........
Q..B..Q.
Q.......
........
........
........
..QQB..Q
........
........
........
My original intuition was to place the queens on unique rows and columns to cover as much as possible but it turns out there are solutions with three of them on the same row.
Python script: https://gist.github.com/dllu/698d5f71b2b9735c5c462ddf4a2f6fc...
Here's how it works:
0. precompute the attack patterns of each possible queen/bishop location as a bitmask, stored as an integer
1. generate candidate solutions, allowing attack rays to pass through other pieces, by brute forcing the positions of the 5 pieces and taking the bitwise OR of their attacks
2. out of the candidate solutions, check which ones are actually valid taking into account occlusion. Actually, you only need to check if the queen's horizontal attack is blocked by the bishop, as queens cannot block each other (the blocking queen herself has the same attacks so they effectively pass through each other).
More fun facts:
After identifying solutions up to rotation and reflection there are only 49 solutions. No solutions have rotational symmetry, and there is exactly one solution with reflection symmetry (already mentioned by an earlier commenter).
Out of the 49 solution classes, there are 18 distinct queen layouts. The layouts have between 1 and 5 ways to place the bishop to complete the solution. Interestingly, there is exactly one queen layout (up to rotation / reflection) for which there are exactly 2 ways to place the bishop to complete the puzzle.
I used CP-SAT to enumerate the solutions. A heuristic for "interesting" solutions is those which only admit one valid bishop placement. For example:
Where the bishop lies at the intersection of three queens' horizontal attacks. With these queens, no other bishop placement works.
[dead]
It's a bit disappointing, then, that the page's action on clicking the "solution" button is just to set the pieces to:
It would be cool if it randomly selected one of those 388, so you could click repeatedly and develop an intuition for what kinds of distributions were a valid solution.
I also tried the "place the queens on unique rows and columns".
That got me down to 6 free spaces.
is there a solution where all the pieces are covered as well?
Unfortunately there are none