Previous part: Battleship player agent - 4

Shooting itself is quite easy in this case, but we should keep in mind the available fleet so we stop hunting as soon as someone has won already.

submarine = Nonempty @List
 `ha` Item Unit `ha` Maybe `ha` Next
 `ha` Item Unit `ha` Maybe `ha` Next
 `ha` Item Unit `ha` Maybe `hv` Last
destroyer = Nonempty @List
 `ha` Item Unit `ha` Maybe `ha` Next
 `ha` Item Unit `ha` Maybe `hv` Last
fleet = Nonempty @List @Ship
 `ha_` Item `hv` submarine `ha_` Maybe `ha_` Next
 `ha_` Item `hv` destroyer `ha_` Maybe `hv_` Last

Work in progress…