diff --git a/fillit/lib/libft b/fillit/lib/libft index 3b137f6f..4ec8bf9e 160000 --- a/fillit/lib/libft +++ b/fillit/lib/libft @@ -1 +1 @@ -Subproject commit 3b137f6f49a9b1025a3566272d3dfb7e7a44d316 +Subproject commit 4ec8bf9ec711dd24c399d75c5763ee6706d09104 diff --git a/fillit/src/fillit_blobs.c b/fillit/src/fillit_blobs.c index 73183c30..6d145918 100644 --- a/fillit/src/fillit_blobs.c +++ b/fillit/src/fillit_blobs.c @@ -9,21 +9,13 @@ int ft_fit_blob(char **board, t_list **amap, t_list *blob, t_list *lttmn, int s int i; size = ft_strlen(*board); - /* blob = *(t_list **)lblob->content; */ - - /* ft_putendl("fitting blob :"); */ - /* ft_show_board(board); */ - /* ft_lst_print2(lblob, &ft_putnbr); */ while (blob) { i = *(int*)blob->content; - /* printf("at i=%i\n", i); */ - /* fflush(stdout); */ list = lttmn; while (list) { ttmn = (t_ttmn *)list->content; - /* ft_show_ttmn(*ttmn); */ if (ttmn->placed) { list = list->next; @@ -36,8 +28,6 @@ int ft_fit_blob(char **board, t_list **amap, t_list *blob, t_list *lttmn, int s } ttmn->placed = 1; new_map = ft_lstmap(*amap, &ft_id); - /* printf("just fitted ttmn %c\n", ttmn->id); */ - /* ft_show_ttmn(*ttmn); */ if (ft_solver(board, &new_map, lttmn, space)) return (1); ttmn->placed = 0; @@ -46,7 +36,6 @@ int ft_fit_blob(char **board, t_list **amap, t_list *blob, t_list *lttmn, int s } blob = blob->next; } - /* ft_putendl("failed to fit blob"); */ return (0); } @@ -61,27 +50,16 @@ int ft_get_blobs(char **board, t_list **amap, t_list *lttmn, int space) if (!lttmn) return (ft_solved(board)); size = ft_strlen(*board); - /* ft_putendl("getting blobs for"); */ - /* ft_lst_print(*amap, &ft_putnbr); */ - /* ft_show_board(board); */ new_map = ft_lstmap(*amap, &ft_id); while (new_map) { i = *(int *)(new_map)->content; blob = ft_empty_here(board, &new_map, size, i); ft_board_remove(board, '*'); - /* ft_putendl("found blob:"); */ - /* ft_lst_print(blob, &ft_putnbr); */ - /* if (ft_lstsize(blob) / 4 > 0) */ - /* ft_lsteadd(&lblob, ft_lstnew(&blob, sizeof(t_list *))); */ if (ft_lstsize(blob) / 4 <= 1) { space -= ft_lstsize(blob) % 4; - /* ft_putendl("delsub:"); */ - /* ft_lst_print(*amap, &ft_putnbr); */ ft_lst_delsub(amap, blob, &ft_diff, &ft_lst_cfree); - /* ft_lst_print(blob, &ft_putnbr); */ - /* ft_lst_print(*amap, &ft_putnbr); */ } else sup_space -= ft_lstsize(blob) % 4; @@ -92,83 +70,12 @@ int ft_get_blobs(char **board, t_list **amap, t_list *lttmn, int space) else space -= 4; } - /* ft_lst_print(*(t_list **)ft_lstlast(lblob), &ft_putnbr); */ - /* printf("took off %i, waste=%i\n", ft_lstsize(blob) % 4, size*size - 4*g_ttmn - space); */ - /* ft_show_board(board); */ - /* ft_lst_print(blob, &ft_putnbr); */ - /* fflush(stdout); */ if (space + sup_space < 0) { ft_board_remove(board, '*'); - /* ft_show_board(board); */ - /* printf("lack of space=%i\n", space); */ - /* fflush(stdout); */ return (0); } } ft_board_remove(board, '*'); - - /* ft_putendl("found blobs in map:"); */ - /* ft_show_board(board); */ - /* ft_lst_print2(lblob, &ft_putnbr); */ return (ft_solver(board, amap, lttmn, space)); } - -/* int ft_check_blobs(char **board, t_list **amap, t_list *lblob, t_list *lttmn, int space) */ -/* { */ -/* t_list *blob; */ -/* t_list *new_map; */ -/* int size; */ - -/* /1* ft_putendl("at start of check_blobs"); *1/ */ -/* if (!lttmn) */ -/* return (ft_solved(board)); */ -/* if (((t_ttmn *)lttmn->content)->placed) */ -/* return (ft_check_blobs(board, amap, lblob, lttmn->next, space)); */ -/* fflush(stdout); */ -/* if (!lblob) */ -/* { */ -/* /1* printf("calling solver, no more blobs\n"); *1/ */ -/* /1* fflush(stdout); *1/ */ -/* /1* new_map = ft_lstmap(*amap, &ft_id); *1/ */ -/* return (ft_solver(board, amap, lttmn, space)); */ -/* } */ -/* size = ft_strlen(*board); */ -/* blob = *(t_list **)lblob->content; */ - -/* /1* ft_show_board(board); *1/ */ -/* /1* ft_lst_print(*amap, &ft_putnbr); *1/ */ -/* /1* ft_lst_print2(lblob, &ft_putnbr); *1/ */ -/* if (ft_lstsize(blob) / 4 == 1) */ -/* { */ -/* /1* new_map = ft_lstmap(*amap, &ft_id); *1/ */ -/* if (ft_fit_blob(board, amap, lblob, lttmn, space)) */ -/* { */ -/* lblob = lblob->next; */ -/* return (1); */ -/* } */ -/* else */ -/* { */ -/* space -= 4; */ -/* /1* printf("took off 4 from space : %i (fit)\n", space); *1/ */ -/* /1* fflush(stdout); *1/ */ -/* if (space < 0) */ -/* { */ -/* /1* ft_show_board(board); *1/ */ -/* /1* ft_putendl("not enough space"); *1/ */ -/* return (0); */ -/* } */ -/* } */ -/* } */ -/* else */ -/* { */ -/* /1* ft_lst_print(*amap, &ft_putnbr); *1/ */ -/* /1* printf("blob too big, adding to map\n"); *1/ */ -/* /1* fflush(stdout); *1/ */ -/* /1* ft_lst_print(*amap, &ft_putnbr); *1/ */ - -/* ft_lst_sorted_merge(amap, blob, &ft_diff); */ -/* } */ -/* new_map = ft_lstmap(*amap, &ft_id); */ -/* return(ft_check_blobs(board, &new_map, lblob->next, lttmn, space)); */ -/* } */ diff --git a/fillit/src/fillit_legacy.c b/fillit/src/fillit_legacy.c index 8508d2be..3aea5476 100644 --- a/fillit/src/fillit_legacy.c +++ b/fillit/src/fillit_legacy.c @@ -53,3 +53,62 @@ /* } */ /* return (0); */ /* } */ + +/* int ft_check_blobs(char **board, t_list **amap, t_list *lblob, t_list *lttmn, int space) */ +/* { */ +/* t_list *blob; */ +/* t_list *new_map; */ +/* int size; */ + +/* /1* ft_putendl("at start of check_blobs"); *1/ */ +/* if (!lttmn) */ +/* return (ft_solved(board)); */ +/* if (((t_ttmn *)lttmn->content)->placed) */ +/* return (ft_check_blobs(board, amap, lblob, lttmn->next, space)); */ +/* fflush(stdout); */ +/* if (!lblob) */ +/* { */ +/* /1* printf("calling solver, no more blobs\n"); *1/ */ +/* /1* fflush(stdout); *1/ */ +/* /1* new_map = ft_lstmap(*amap, &ft_id); *1/ */ +/* return (ft_solver(board, amap, lttmn, space)); */ +/* } */ +/* size = ft_strlen(*board); */ +/* blob = *(t_list **)lblob->content; */ + +/* /1* ft_show_board(board); *1/ */ +/* /1* ft_lst_print(*amap, &ft_putnbr); *1/ */ +/* /1* ft_lst_print2(lblob, &ft_putnbr); *1/ */ +/* if (ft_lstsize(blob) / 4 == 1) */ +/* { */ +/* /1* new_map = ft_lstmap(*amap, &ft_id); *1/ */ +/* if (ft_fit_blob(board, amap, lblob, lttmn, space)) */ +/* { */ +/* lblob = lblob->next; */ +/* return (1); */ +/* } */ +/* else */ +/* { */ +/* space -= 4; */ +/* /1* printf("took off 4 from space : %i (fit)\n", space); *1/ */ +/* /1* fflush(stdout); *1/ */ +/* if (space < 0) */ +/* { */ +/* /1* ft_show_board(board); *1/ */ +/* /1* ft_putendl("not enough space"); *1/ */ +/* return (0); */ +/* } */ +/* } */ +/* } */ +/* else */ +/* { */ +/* /1* ft_lst_print(*amap, &ft_putnbr); *1/ */ +/* /1* printf("blob too big, adding to map\n"); *1/ */ +/* /1* fflush(stdout); *1/ */ +/* /1* ft_lst_print(*amap, &ft_putnbr); *1/ */ + +/* ft_lst_sorted_merge(amap, blob, &ft_diff); */ +/* } */ +/* new_map = ft_lstmap(*amap, &ft_id); */ +/* return(ft_check_blobs(board, &new_map, lblob->next, lttmn, space)); */ +/* } */ diff --git a/fillit/src/fillit_solver.c b/fillit/src/fillit_solver.c index 2a66b343..d3176700 100644 --- a/fillit/src/fillit_solver.c +++ b/fillit/src/fillit_solver.c @@ -3,9 +3,6 @@ int ft_solved(char **board) { g_sol = ft_copy_board(board); - /* printf("new solution : size %i\n", ft_strlen(*board)); */ - /* fflush(stdout); */ - /* ft_show_board(g_sol); */ return (1); } @@ -24,44 +21,20 @@ int ft_solver(char **board, t_list **amap, t_list *lttmn, int space) return (ft_solver(board, amap, lttmn->next, space)); size = ft_strlen(*board); map = *amap; - - /* ft_putendl("before solver"); */ - /* printf("space=%i, waste=%i\n", space, size*size - 4*g_ttmn - space); */ - /* fflush(stdout); */ - ft_show_board(board); - ft_lst_print(map, &ft_putnbr); - ft_show_ttmn(*ttmn); while (map) { i = *(int *)map->content; - /* printf("looking at %i\n", i); */ - /* fflush(stdout); */ if (ft_board_add(board, *ttmn, i)) { map = map->next; - /* printf("map=%p\n", map); */ - /* fflush(stdout); */ continue ; } - /* printf("placed ttmn %c at %i\n", ttmn->id, i); */ - /* fflush(stdout); */ - - ft_map_delttmn(amap, i, ttmn->pos, size); valmap = ft_lstmap(*amap, &ft_id); + ft_map_delttmn(&valmap, i, ttmn->pos, size); if (ft_get_blobs(board, &valmap, lttmn->next, space)) return (1); - - /* printf("after blob fail\n"); */ - /* fflush(stdout); */ - - ft_map_addttmn(amap, i, ttmn->pos, size); - ft_lst_delif(amap, &i, &ft_diff, &ft_lst_cfree); - map = *amap; ft_board_remove(board, ttmn->id); - - /* ft_lst_print(*amap, &ft_putnbr); */ - /* ft_show_board(board); */ + map = map->next; } - /* ft_putendl("failed solver"); */ return (0); } diff --git a/fillit/src/ttmn_lib.c b/fillit/src/ttmn_lib.c index 9b3acfa2..ff23cf16 100644 --- a/fillit/src/ttmn_lib.c +++ b/fillit/src/ttmn_lib.c @@ -22,7 +22,7 @@ void ft_map_delttmn(t_list **amap, int anchor, int pos[4][2], int size) /* printf("deleting: %i\n", anchor + size * pos[i][0] + pos[i][1]); */ /* fflush(stdout); */ j = anchor + size * pos[i][0] + pos[i][1]; - ft_lst_remove_if(amap, &j, &ft_diff); + ft_lst_delif(amap, &j, &ft_diff, &ft_lst_cfree); } }