anchor.diff:      [hint_for_chessman_type(Board, Coord, Color, ?bishop, History),
        hint_for_chessman_type(Board, Coord, Color, ?rook, History)];
   hint_for_chessman_type(Board, Coord, Color, ?knight, _History) ->
  -    [is_empty_or_enemy(Board, Color, ind_inc(Coord, Step)) ||
  -        Step <- knight_steps()];
  +    [is_empty_or_enemy(Board, Color, ind_inc(Coord, Delta)) ||
  +        Delta <- knight_deltas()];
   hint_for_chessman_type(Board, Coord, Color, ?king, History) ->
       [is_empty_or_enemy(Board, Color, ind_inc(Coord, {-1, -1})),
        is_empty_or_enemy(Board, Color, ind_inc(Coord, {-1, 0})),
  
positive.code: 
  %% @doc Search the enemy chessman starting from the coordinates
  %% with the direction.
  -spec find_enemy(Board :: board(), Coord :: coord(), Step :: step(),
                   EnemyColor :: echessd_game:color()) ->
                          {EnemyChessmanType :: echessd_game:chessman_type(),
                           Distance :: pos_integer()} |
                          undefined.
  find_enemy(Board, Coord, Step, EnemyColor) ->
      find_enemy(Board, Coord, Step, EnemyColor, _Distance = 1).
  
  %% @doc Helper for the find_enemy/4 fun.
  -spec find_enemy(Board :: board(), Coord :: coord(), Direction :: step(),
                   EnemyColor :: echessd_game:color(),
                   Distance :: pos_integer()) ->
                          {EnemyChessmanType :: echessd_game:chessman_type(),
  
negative.code: ind_enc({C, R}) ->
      [$a + C - 1, $1 + R - 1].
  
  %% @doc Increment the cell coordinates with the Delta.
  %% The function return new coordinates or ?null if result
  %% is out of valid coordinates range (out of the chess board).
  -spec ind_inc(Coord :: coord(), Delta :: delta()) ->
                       (NewCoord :: coord()) | ?null.
  ind_inc({C, R}, {CS, RS}) ->
      Crd = {C + CS, R + RS},
  