116 lines
2.3 KiB
C
116 lines
2.3 KiB
C
|
/* ************************************************************************** */
|
||
|
/* */
|
||
|
/* ::: :::::::: */
|
||
|
/* place_sure.c :+: :+: :+: */
|
||
|
/* +:+ +:+ +:+ */
|
||
|
/* By: adjoly <marvin@42.fr> +#+ +:+ +#+ */
|
||
|
/* +#+#+#+#+#+ +#+ */
|
||
|
/* Created: 2023/07/22 11:37:10 by adjoly #+# #+# */
|
||
|
/* Updated: 2023/07/23 11:11:18 by psalame ### ########.fr */
|
||
|
/* */
|
||
|
/* ************************************************************************** */
|
||
|
|
||
|
int get_area_size(void);
|
||
|
|
||
|
void con_col(int **result, int i, int j, int **col)
|
||
|
{
|
||
|
int k;
|
||
|
|
||
|
k = 0;
|
||
|
if (col[i][j] == 1)
|
||
|
{
|
||
|
if (j == 1)
|
||
|
result[get_area_size() - 1][i] = get_area_size();
|
||
|
else
|
||
|
result[0][i] = get_area_size();
|
||
|
}
|
||
|
else if (col[i][j] == get_area_size())
|
||
|
{
|
||
|
if (j == 1)
|
||
|
{
|
||
|
k = get_area_size() + 1;
|
||
|
while (--k > 0)
|
||
|
result[k - 1][i] = (get_area_size() - k + 1);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
while (++k <= get_area_size())
|
||
|
result[k - 1][i] = k;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void con_row(int **result, int i, int j, int **row)
|
||
|
{
|
||
|
int k;
|
||
|
|
||
|
k = 0;
|
||
|
if (row[i][j] == 1)
|
||
|
{
|
||
|
if (j == 1)
|
||
|
result[i][get_area_size() - 1] = get_area_size();
|
||
|
else
|
||
|
result[i][0] = get_area_size();
|
||
|
}
|
||
|
else if (row[i][j] == get_area_size())
|
||
|
{
|
||
|
if (j == 1)
|
||
|
{
|
||
|
k = get_area_size();
|
||
|
while (--k > 0)
|
||
|
result[i][k - 1] = (get_area_size() - k + 1);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
while (++k <= get_area_size())
|
||
|
result[i][k - 1] = k;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void place_col(int size, int **col, int **result)
|
||
|
{
|
||
|
int i;
|
||
|
int j;
|
||
|
|
||
|
i = 0;
|
||
|
while (i < size)
|
||
|
{
|
||
|
j = 0;
|
||
|
while (j < 2)
|
||
|
{
|
||
|
con_col(result, i, j, col);
|
||
|
j++;
|
||
|
}
|
||
|
i++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void place_row(int size, int **row, int **result)
|
||
|
{
|
||
|
int i;
|
||
|
int j;
|
||
|
|
||
|
i = 0;
|
||
|
while (i < size)
|
||
|
{
|
||
|
j = 0;
|
||
|
while (j < 2)
|
||
|
{
|
||
|
con_row(result, i, j, row);
|
||
|
j++;
|
||
|
}
|
||
|
i++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int **ft_place_sure(int **row, int **col, int **result)
|
||
|
{
|
||
|
int size;
|
||
|
|
||
|
size = get_area_size();
|
||
|
place_row(size, row, result);
|
||
|
place_col(size, col, result);
|
||
|
return (result);
|
||
|
}
|