42-archive/fillit/src/fillit_waste.c

35 lines
1.1 KiB
C

#include "fillit.h"
t_list *ft_waste_here(char **board, t_list **amap, int size, int i)
{
t_list *blob;
blob = NULL;
if (board[i / size][i % size] == '.')
{
board[i / size][i % size] = '*';
/* ft_lst_print(*amap, &ft_putnbr); */
/* printf("removing %i from map\n", i); */
/* ft_lst_print(*amap, &ft_putnbr); */
ft_lst_remove_if(amap, i, &ft_diff);
blob = ft_waste_around(board, amap, size, i);
ft_lst_sorted_insert(&blob, ft_lstnew(&i, sizeof(int)), &ft_diff);
}
/* printf("list at %i: ", i); */
/* fflush(stdout); */
/* ft_lst_print(blob, &ft_putnbr); */
return (blob);
}
t_list *ft_waste_around(char **board, t_list **amap, int size, int i)
{
t_list *add;
add = NULL;
i % size < size - 1 ? ft_lst_sorted_merge(&add, ft_waste_here(board, amap, size, i + 1), &ft_diff) : 0;
i / size > 0 ? ft_lst_sorted_merge(&add, ft_waste_here(board, amap, size, i - size), &ft_diff) : 0;
i % size > 0 ? ft_lst_sorted_merge(&add, ft_waste_here(board, amap, size, i - 1), &ft_diff) : 0;
i / size < size - 1 ? ft_lst_sorted_merge(&add, ft_waste_here(board, amap, size, i + size), &ft_diff) : 0;
/* ft_lst_print(add, &ft_putnbr); */
return (add);
}