anchor.diff:  -export([start/0, stop/0]).
   
   get_initial() ->
  -  [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  +  from_matrix([
  +    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1],
       [1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 4, 1],
       [1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1],
  
positive.code:     [1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1],
      [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1],
      [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    ].
  
  start() ->
    MapLoop = spawn(fun() -> map_update_loop(get_initial()) end),
  
negative.code: map_update_loop(Map) ->
    receive
      {get, Pid} ->
        Pid ! protocol:map_update(to_matrix(Map)),
        map_update_loop(Map);
  
      {update, {X, Y}, Value} ->
        map_update_loop(set(X, Y, Value, Map))
    end.