diff --git a/fillit/fillit b/fillit/fillit deleted file mode 100755 index ec770143..00000000 Binary files a/fillit/fillit and /dev/null differ diff --git a/fillit/includes/fillit.h b/fillit/includes/fillit.h index 9d418d84..5430a9ec 100644 --- a/fillit/includes/fillit.h +++ b/fillit/includes/fillit.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:38:16 by jhalford #+# #+# */ -/* Updated: 2016/11/08 16:51:11 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 11:00:45 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,9 +38,6 @@ typedef struct s_stack t_stack; typedef struct s_ttmn t_ttmn; t_list *ft_parse(char *filename); -int ft_parse_line(char *line, int linenumber, t_list **list); -int ft_parse_sharp(int *j, int *k, t_ttmn *ttmn); -int ft_parse_addttmn(int *j, int *k, t_ttmn ttmn, t_list **list); int ft_solver(char **board, t_list *lttmn, int space, int size); int ft_solved(char **board); @@ -49,13 +46,11 @@ int ft_check_waste(char **board, t_list *lttmn, int space, int size); int ft_fit_blob( char **board, t_list *lttmn, int space, int size); int ft_floodfill_recursive(char **board, int size, int i, char c); -int ft_floodfill_stack(char **board, int size, int i, char c); void ft_board_print(char **board); char **ft_board_init(size_t size); char **ft_board_copy(char **board); void ft_board_fill(char **dst, char **src); -void ft_board_free(char ***board); void ft_board_replace(char **board, char a, char b); void ft_board_remove(char **board, char *s); int ft_board_add(char **board, t_ttmn ttmn, int i, int size); diff --git a/fillit/src/fillit/fillit_check_waste.c b/fillit/src/fillit/fillit_check_waste.c index c2ba19cd..937b61f0 100644 --- a/fillit/src/fillit/fillit_check_waste.c +++ b/fillit/src/fillit/fillit_check_waste.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/04 13:24:35 by jhalford #+# #+# */ -/* Updated: 2016/11/08 17:27:04 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 10:19:04 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/fillit/src/fillit/fillit_fit_blob.c b/fillit/src/fillit/fillit_fit_blob.c index 972e4413..c2c6f4cd 100644 --- a/fillit/src/fillit/fillit_fit_blob.c +++ b/fillit/src/fillit/fillit_fit_blob.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:39:49 by jhalford #+# #+# */ -/* Updated: 2016/11/08 16:59:50 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 10:19:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/fillit/src/fillit/fillit_parser.c b/fillit/src/fillit/fillit_parser.c index a39693dc..3219d9cc 100644 --- a/fillit/src/fillit/fillit_parser.c +++ b/fillit/src/fillit/fillit_parser.c @@ -6,16 +6,55 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:29:51 by jhalford #+# #+# */ -/* Updated: 2016/11/07 12:16:01 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 11:06:01 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "fillit.h" -int g_target = 0; +int g_target = 2; int g_ttmn = 0; -int ft_parse_line(char *line, int linenumber, t_list **list) +static int ft_parse_sharp(int *j, int *k, t_ttmn *ttmn) +{ + static int ref[2]; + + if (*k == 0) + { + ref[0] = *j / 4; + ref[1] = *j % 4; + ttmn->pos[0][0] = 0; + ttmn->pos[0][1] = 0; + } + else if (*k <= 3) + { + ttmn->pos[*k][0] = (*j) / 4 - ref[0]; + ttmn->pos[*k][1] = (*j) % 4 - ref[1]; + } + else + return (1); + *k += 1; + return (0); +} + +static int ft_parse_addttmn(int *j, int *k, t_ttmn ttmn, t_list **list) +{ + static char id = 'A'; + t_list *tmp; + + ttmn.id = id++; + if (*j != 16 || *k != 4) + return (1); + if (ft_ttmn_validate(ttmn)) + return (1); + tmp = ft_lstnew(&ttmn, sizeof(t_ttmn)); + ft_lsteadd(list, tmp); + *j = 0; + *k = 0; + return (0); +} + +static int ft_parse_line(char *line, int linenumber, t_list **list) { static t_ttmn ttmn; static int j = 0; @@ -44,46 +83,7 @@ int ft_parse_line(char *line, int linenumber, t_list **list) return (0); } -int ft_parse_sharp(int *j, int *k, t_ttmn *ttmn) -{ - static int ref[2]; - - if (*k == 0) - { - ref[0] = *j / 4; - ref[1] = *j % 4; - ttmn->pos[0][0] = 0; - ttmn->pos[0][1] = 0; - } - else if (*k <= 3) - { - ttmn->pos[*k][0] = (*j) / 4 - ref[0]; - ttmn->pos[*k][1] = (*j) % 4 - ref[1]; - } - else - return (1); - *k += 1; - return (0); -} - -int ft_parse_addttmn(int *j, int *k, t_ttmn ttmn, t_list **list) -{ - static char id = 'A'; - t_list *tmp; - - ttmn.id = id++; - if (*j != 16 || *k != 4) - return (1); - if (ft_ttmn_validate(ttmn)) - return (1); - tmp = ft_lstnew(&ttmn, sizeof(t_ttmn)); - ft_lsteadd(list, tmp); - *j = 0; - *k = 0; - return (0); -} - -t_list *ft_parse(char *filename) +t_list *ft_parse(char *filename) { int fd; int ret; @@ -98,13 +98,16 @@ t_list *ft_parse(char *filename) while ((ret = get_next_line(fd, &line))) { if (ft_parse_line(line, linenumber++, &list)) + { + free(line); return (0); + } + free(line); } if (ft_parse_line("", linenumber, &list)) return (0); - g_target = 3; g_ttmn = ft_lstsize(list); - while ((g_ttmn * 4) > (g_target) * (g_target)) + while ((g_target) * (g_target) - g_ttmn * 4 < 0) g_target++; return (list); } diff --git a/fillit/src/fillit/fillit_solver.c b/fillit/src/fillit/fillit_solver.c index a0d6388f..eb344003 100644 --- a/fillit/src/fillit/fillit_solver.c +++ b/fillit/src/fillit/fillit_solver.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:36:27 by jhalford #+# #+# */ -/* Updated: 2016/11/08 17:26:58 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 10:54:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ int ft_solved(char **board) { ft_board_remove(board, "^*"); + ft_sstrfree(g_sol); g_sol = ft_board_copy(board); return (1); } diff --git a/fillit/src/fillit/lib_board.c b/fillit/src/fillit/lib_board.c index 5af72e04..9af3885e 100644 --- a/fillit/src/fillit/lib_board.c +++ b/fillit/src/fillit/lib_board.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:34:39 by jhalford #+# #+# */ -/* Updated: 2016/11/08 17:26:20 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 10:17:03 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/fillit/src/fillit/lib_board2.c b/fillit/src/fillit/lib_board2.c index 17cd8188..b116685f 100644 --- a/fillit/src/fillit/lib_board2.c +++ b/fillit/src/fillit/lib_board2.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:31:46 by jhalford #+# #+# */ -/* Updated: 2016/11/08 16:49:44 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 10:15:44 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,20 +40,6 @@ int ft_board_add(char **board, t_ttmn ttmn, int i, int size) return (0); } -void ft_board_free(char ***board) -{ - int i; - - i = 0; - while ((*board)[i]) - { - free((*board)[i]); - i++; - } - free(*board); - *board = NULL; -} - void ft_board_replace(char **board, char a, char b) { int i; diff --git a/fillit/src/fillit/lib_ttmn.c b/fillit/src/fillit/lib_ttmn.c index 191c8155..47a06331 100644 --- a/fillit/src/fillit/lib_ttmn.c +++ b/fillit/src/fillit/lib_ttmn.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:32:01 by jhalford #+# #+# */ -/* Updated: 2016/11/07 12:14:50 by jhalford ### ########.fr */ +/* Updated: 2016/11/11 15:31:49 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/fillit/src/fillit/main.c b/fillit/src/fillit/main.c index f5e31db9..9bc05526 100644 --- a/fillit/src/fillit/main.c +++ b/fillit/src/fillit/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 17:31:13 by jhalford #+# #+# */ -/* Updated: 2016/11/08 17:26:50 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 10:46:17 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,5 +41,6 @@ int main(int ac, char **av) } ft_lstdel(<tmn, &ft_lst_cfree); ft_board_print(g_sol); + ft_sstrfree(g_sol); return (0); } diff --git a/fillit/src/libft/ft_sstrfree.c b/fillit/src/libft/ft_sstrfree.c index a39fd2c2..52e23f98 100644 --- a/fillit/src/libft/ft_sstrfree.c +++ b/fillit/src/libft/ft_sstrfree.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/08 17:01:24 by jhalford #+# #+# */ -/* Updated: 2016/11/08 17:09:26 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 10:38:49 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,9 +17,14 @@ void ft_sstrfree(char **sstr) int i; i = 0; - while (sstr[i]) + if (sstr) { + while (sstr[i]) + { + ft_strdel(sstr + i); + i++; + } ft_strdel(sstr + i); - i++; } + free(sstr); } diff --git a/fillit/src/libft/get_next_line.c b/fillit/src/libft/get_next_line.c index 3263c520..3c7ab4a5 100644 --- a/fillit/src/libft/get_next_line.c +++ b/fillit/src/libft/get_next_line.c @@ -6,14 +6,14 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/04 12:45:02 by jhalford #+# #+# */ -/* Updated: 2016/11/04 13:43:29 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 11:06:04 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "libft.h" -#define BUFF_SIZE 32 +#define BUFF_SIZE 16 -static char *ft_realloc(char *line, int size) +static char *ft_strrealloc(char *line, int size) { char *str; @@ -41,10 +41,11 @@ static int ft_loop_read(int fd, char **line, char (*save)[]) ft_strcat(*line, buf); return (1); } - if ((*line = ft_realloc(*line, ret)) == NULL) + if ((*line = ft_strrealloc(*line, ret)) == NULL) return (-1); ft_strcat(*line, buf); } + free(*line); return (0); }