Queen is combination of Bishop and Rook and Amazon is combination of queen and knight.

The question is how many Amazons can place on a standard chessboard that non of them attack each other without any other pieces allowed?


It's obvious that it should be a smaller number than 9. Also 8 is impossible too. Because all 8-Queen solutions has at least two queens with knight's move position. So is it possible to fit 7 Amazons?

  • 2
    $\begingroup$ fwiw, the "formal" name for such a piece is an "amazon". Also, "rook", not "rock." $\endgroup$ – Dennis Meng Oct 13 '14 at 16:01
  • 2
    $\begingroup$ I'm pretty sure the most is 6, but I have to step away for a bit. If no one comes forth with the full proof by the time I get back, I'll post it. $\endgroup$ – Dennis Meng Oct 13 '14 at 16:10
  • $\begingroup$ @DennisMeng Yeah, i don't know why I missed that text but I agree. 6 solutions are easy to find. I, personally, would need to simulate to remove the chance of a 7. $\endgroup$ – kaine Oct 13 '14 at 16:22
  • $\begingroup$ I can only manage 6 $\endgroup$ – warspyking Oct 13 '14 at 18:22

The answer is 6. I am definitely not the first to say that but my search just ended.

enter image description here

The solution above is easy to find and contains 6 amazons. I had done this by hand but my program found the same (but rotated) solution.

In Excel I wrote the following Macro:

Sub Playz()

While Range("D2").Value < 7
    X = Range("D1").Value + 1
    C = Range("D2").Value
    While checkz(X) And X < 64
        X = X + 1
    If X = 64 Then
        Range("D1").Value = Range("C" + CStr(Range("D2").Value)).Value
        Range("C" + CStr(Range("D2").Value)).Clear
        Range("C" + CStr(Range("D2").Value + 1)).Value = X
        Range("D1").Value = X
    End If
End Sub

Function checkz(ByVal N As Integer) As Boolean

X = N Mod 8
Y = (N - X) / 8

J = 0
While J < 64
If Range("B" + CStr(J + 1)).Value And J <> N Then
    S = J Mod 8
    T = (J - S) / 8
    If X = S Or Y = T Or X + Y = S + T Or X - Y = S - T Then
        checkz = True
        Exit Function
    End If
    If Abs(X - S) = 2 And Abs(Y - T) = 1 Then
        checkz = True
        Exit Function
    End If
    If Abs(X - S) = 1 And Abs(Y - T) = 2 Then
        checkz = True
        Exit Function
    End If
End If
J = J + 1
checkz = False
End Function

The b column contains a counter to identify which cells are filled and which aren't. Cell D2 counts the number of cells in column C. It is much more complicated than it needs to be but was programmed originally for a more difficult puzzle.

The code looks for the next free unattacked square. If it cannot find one, it removes the largest one so far, and tries to find a valid larger one than that. This is an efficient algorithm for searching for a way to arrange chess pieces as long as the removal of one piece from an acceptable arrangement still yields an acceptable arrangement (ignoring the target number of pieces on the board). It could not find a solution for seven as Cell D1 reached 63.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.