35 lines
1.1 KiB
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);
|
|
}
|