I'm a bit confused here, so I'll labour the point as you may be right and our candidates may be also confused, which would indeed defeat the purpose. So I'll try explaining it in a similar manner to how to give it to candidates and if you still see it as a complex task then we may need to do some work on our framing.
Bear in mind this is a similar question to the one we give, not the same. But we use a game board for the chosen game to demonstrate the rules, especially given many of our candidates aren't British.
Given the rules of Battleships, implement fireAt(x: Int, y: Int): Boolean so that, when given board x, the method when called alternately by each player will return true if a hit was made and false if a miss was the result.
Hence a game would go along the lines of:
Player 1 - fireAt(3, 3) = false
Player 2 - fireAt(4, 5) = true
Player 1 - fireAt(2, 3) = false
And so on.
So this problem can really be solved with an array check + update. Plus it's nicely extendable - if people nail it immediately, you could work on a win condition for instance. And it really has nothing whatsoever to do with actually playing the game.