stable, going to branch out new architecture
This commit is contained in:
parent
a349813cd3
commit
359b453734
5 changed files with 66 additions and 66 deletions
|
|
@ -27,8 +27,8 @@ void ft_show_board(char **board);
|
||||||
|
|
||||||
void ft_grow_board(char **board);
|
void ft_grow_board(char **board);
|
||||||
void ft_shrink_board(char **board);
|
void ft_shrink_board(char **board);
|
||||||
int ft_addto_board(char **board, t_ttmn block, size_t i, size_t j);
|
int ft_board_add(char **board, t_ttmn block, size_t i, size_t j);
|
||||||
void ft_takeoff_board(char **board, char c);
|
void ft_board_remove(char **board, char c);
|
||||||
|
|
||||||
int ft_check_pos(char **board, t_ttmn block, int i, int j);
|
int ft_check_pos(char **board, t_ttmn block, int i, int j);
|
||||||
int ft_solver(char **board, t_ttmn *ttmn);
|
int ft_solver(char **board, t_ttmn *ttmn);
|
||||||
|
|
|
||||||
29
fillit/src/fillit_legacy.c
Normal file
29
fillit/src/fillit_legacy.c
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
void ft_grow_board(char **board)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int size;
|
||||||
|
|
||||||
|
size = ft_strlen(*board);
|
||||||
|
i = 0;
|
||||||
|
while (++i <= size)
|
||||||
|
{
|
||||||
|
board[i][size] = '.';
|
||||||
|
board[size][i] = '.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ft_shrink_board(char **board)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int size;
|
||||||
|
|
||||||
|
size = ft_strlen(*board);
|
||||||
|
i = -1;
|
||||||
|
while (++i < size)
|
||||||
|
{
|
||||||
|
board[i][size - 1] = '\0';
|
||||||
|
board[size - 1][i] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
@ -62,35 +62,8 @@ void ft_free_board(char ***board)
|
||||||
*board = NULL;
|
*board = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ft_grow_board(char **board)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int size;
|
|
||||||
|
|
||||||
size = ft_strlen(*board);
|
void ft_board_remove(char **board, char c)
|
||||||
i = 0;
|
|
||||||
while (++i <= size)
|
|
||||||
{
|
|
||||||
board[i][size] = '.';
|
|
||||||
board[size][i] = '.';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ft_shrink_board(char **board)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int size;
|
|
||||||
|
|
||||||
size = ft_strlen(*board);
|
|
||||||
i = -1;
|
|
||||||
while (++i < size)
|
|
||||||
{
|
|
||||||
board[i][size - 1] = '\0';
|
|
||||||
board[size - 1][i] = '\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ft_takeoff_board(char **board, char c)
|
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
|
|
@ -107,7 +80,7 @@ void ft_takeoff_board(char **board, char c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int ft_addto_board(char **board, t_ttmn block, size_t i, size_t j)
|
int ft_board_add(char **board, t_ttmn block, size_t i, size_t j)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
|
|
@ -116,20 +89,26 @@ int ft_addto_board(char **board, t_ttmn block, size_t i, size_t j)
|
||||||
|
|
||||||
size = ft_strlen(*board);
|
size = ft_strlen(*board);
|
||||||
k = 0;
|
k = 0;
|
||||||
if (block.id)
|
while (k < 4)
|
||||||
while (k < 4)
|
{
|
||||||
{
|
x = (int)j + block.pos[k][1];
|
||||||
x = (int)j + block.pos[k][1];
|
y = (int)i + block.pos[k][0];
|
||||||
y = (int)i + block.pos[k][0];
|
/* printf("adding %c to %i,%i\n", block.id, y, x); */
|
||||||
/* printf("adding %c to %i,%i\n", block.id, y, x); */
|
/* fflush(stdout); */
|
||||||
/* fflush(stdout); */
|
if (x > size - 1 || y > size - 1 || x < 0 || y < 0)
|
||||||
if (x > size - 1 || y > size - 1 || x < 0 || y < 0)
|
return (1);
|
||||||
return (1);
|
if (board[y][x] != '.')
|
||||||
if (board[y][x] != '.')
|
return (1);
|
||||||
return (1);
|
/* ft_show_board(board); */
|
||||||
board[y][x] = block.id;
|
k++;
|
||||||
/* ft_show_board(board); */
|
}
|
||||||
k++;
|
k = 0;
|
||||||
}
|
while (k < 4)
|
||||||
|
{
|
||||||
|
x = (int)j + block.pos[k][1];
|
||||||
|
y = (int)i + block.pos[k][0];
|
||||||
|
board[y][x] = block.id;
|
||||||
|
k++;
|
||||||
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ int ft_solver(char **board, t_ttmn *ttmn)
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
int size;
|
int size;
|
||||||
char **tmp;
|
|
||||||
|
|
||||||
|
/* ft_show_board(board); */
|
||||||
size = ft_strlen(*board);
|
size = ft_strlen(*board);
|
||||||
if (!(*ttmn).id)
|
if (!(*ttmn).id)
|
||||||
{
|
{
|
||||||
|
|
@ -50,22 +50,13 @@ int ft_solver(char **board, t_ttmn *ttmn)
|
||||||
j = -1;
|
j = -1;
|
||||||
while (++j < size)
|
while (++j < size)
|
||||||
{
|
{
|
||||||
if (ft_addto_board(board, *ttmn, i, j))
|
if (ft_board_add(board, *ttmn, i, j))
|
||||||
{
|
|
||||||
ft_takeoff_board(board, ttmn->id);
|
|
||||||
continue ;
|
continue ;
|
||||||
}
|
if (size == (int)g_target && !ft_validate_waste(board, ttmn + 1))
|
||||||
/* printf("validated for addto\n"); */
|
;
|
||||||
tmp = ft_copy_board(board);
|
else if (ft_solver(board, ttmn + 1))
|
||||||
if (size == (int)g_target && !ft_validate_waste(tmp, ttmn + 1))
|
|
||||||
{
|
|
||||||
ft_takeoff_board(board, ttmn->id);
|
|
||||||
continue ;
|
|
||||||
}
|
|
||||||
/* printf("validated for waste\n"); */
|
|
||||||
if (ft_solver(board, ttmn + 1))
|
|
||||||
return (1);
|
return (1);
|
||||||
ft_takeoff_board(board, ttmn->id);
|
ft_board_remove(board, ttmn->id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ int ft_waste_around(char ***board_ptr, int i, int j)
|
||||||
n += j > 0 ? ft_waste_here(board_ptr, i, j - 1) : 0;
|
n += j > 0 ? ft_waste_here(board_ptr, i, j - 1) : 0;
|
||||||
n += i < (int)size - 1 ? ft_waste_here(board_ptr, i + 1, j) : 0;
|
n += i < (int)size - 1 ? ft_waste_here(board_ptr, i + 1, j) : 0;
|
||||||
n += j < (int)size - 1 ? ft_waste_here(board_ptr, i, j + 1) : 0;
|
n += j < (int)size - 1 ? ft_waste_here(board_ptr, i, j + 1) : 0;
|
||||||
/* printf("waste around %i,%i = %zu\n", i, j, n); */
|
|
||||||
return (n);
|
return (n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -35,10 +34,10 @@ int ft_validate_waste(char **board, t_ttmn *ttmn)
|
||||||
int waste;
|
int waste;
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
int l;
|
|
||||||
int blob;
|
int blob;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
|
board = ft_copy_board(board);
|
||||||
max_waste = g_target * g_target - g_ttmn * 4;
|
max_waste = g_target * g_target - g_ttmn * 4;
|
||||||
waste = 0;
|
waste = 0;
|
||||||
size = ft_strlen(*board);
|
size = ft_strlen(*board);
|
||||||
|
|
@ -50,16 +49,16 @@ int ft_validate_waste(char **board, t_ttmn *ttmn)
|
||||||
while (++j < (int)size)
|
while (++j < (int)size)
|
||||||
{
|
{
|
||||||
blob = ft_waste_here(&board, i, j);
|
blob = ft_waste_here(&board, i, j);
|
||||||
if (blob / 4 == 1)
|
if (blob == 4)
|
||||||
{
|
{
|
||||||
waste += 4;
|
waste += 4;
|
||||||
l = -1;
|
int l = -1;
|
||||||
/* ft_show_board(board); */
|
/* ft_show_board(board); */
|
||||||
while (ttmn[++l].id)
|
while (ttmn[++l].id)
|
||||||
{
|
{
|
||||||
/* ft_show_ttmn(ttmn[l]); */
|
/* ft_show_ttmn(ttmn[l]); */
|
||||||
/* printf("checking at %i,%i = %i vs %i\n", i, j, ft_check_pos(board, ttmn[l], i, j), (int)size); */
|
/* printf("checking at %i,%i = %i vs %i\n", i, j, ft_check_pos(board, ttmn[l], i, j), (int)size); */
|
||||||
fflush(stdout);
|
/* fflush(stdout); */
|
||||||
if (ft_check_pos(board, ttmn[l], i, j) == (int)size)
|
if (ft_check_pos(board, ttmn[l], i, j) == (int)size)
|
||||||
{
|
{
|
||||||
waste -= 4;
|
waste -= 4;
|
||||||
|
|
@ -72,11 +71,13 @@ int ft_validate_waste(char **board, t_ttmn *ttmn)
|
||||||
{
|
{
|
||||||
/* printf("waste = %i (failed: max = %i)\n", waste, max_waste); */
|
/* printf("waste = %i (failed: max = %i)\n", waste, max_waste); */
|
||||||
/* fflush(stdout); */
|
/* fflush(stdout); */
|
||||||
|
/* ft_free_board(&board); */
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* printf("waste = %i (passed: max = %i)\n", waste, max_waste); */
|
/* printf("waste = %i (passed: max = %i)\n", waste, max_waste); */
|
||||||
/* fflush(stdout); */
|
/* fflush(stdout); */
|
||||||
|
/* ft_free_board(&board); */
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue