+ uint32_t map_size = world.map.length * world.map.length;
+ uint16_t * score_map = try_malloc(map_size * sizeof(uint16_t), __func__);
+ init_score_map(filter, score_map, map_size, t_eye);
+ dijkstra_map(score_map, UINT16_MAX-1);
+ uint16_t neighbors[N_DIRS];
+ uint16_t pos_i = (t_eye->pos.y * world.map.length) + t_eye->pos.x;
+ get_neighbor_scores(score_map, pos_i, UINT16_MAX-1, neighbors);
+ free(score_map);
+ uint16_t min_neighbor = UINT16_MAX-1;
+ char * dirs = "edcxsw";/* get_neighbor_scores()'s clockwise dir order.*/
+ uint8_t i;
+ for (i = 0; i < N_DIRS; i++)