anchor.diff:                              _ ->
                                   case is_cell_under_attack(
                                          Board, crd_inc(KingStart, {1, 0}),
  -                                       Enemies) of
  +                                       Color) of
                                       true -> [];
                                       _ ->
                                           [crd_inc(KingStart, {2, 0})]
  
positive.code:             end
      end.
  
  is_cell_under_attack(Board, Crd, Enemies) ->
      lists:any(
        fun({I, {C, F}}) ->
                lists:member(
                  Crd,
                  possible(Board, I, C, F, []))
        end, Enemies).
  
  -define(seq_1_8, [1,2,3,4,5,6,7,8]).
  all_enemies(Board, MyColor) ->
      lists:flatmap(
        fun(Crd) ->
                case cell(Board, Crd) of
                    {Color, _} = F when Color /= MyColor ->
                        [{Crd, F}];
                    _ -> []
                end
        end, [{C, R} || C <- ?seq_1_8, R <- ?seq_1_8]).
  
  is_king_have_been_moved(History, ?white) ->
      lists:any(fun(Move) -> lists:prefix("e1", Move) end, History);
  
negative.code:     [possible_(B, F, C, ?bishop, History),
       possible_(B, F, C, ?rook, History)];
  possible_(B, F, C, ?knight, _History) ->
      [is_empty_or_enemy(B, C, crd_inc(F, Step)) ||
          Step <- knight_steps()];
  possible_(B, F, C, ?king, History) ->
      [is_empty_or_enemy(B, C, crd_inc(F, {-1, -1})),
       is_empty_or_enemy(B, C, crd_inc(F, {-1, 0})),
  