Пример #1
0
int			ft_checkplace_piece(t_info *info, t_piece *piece, int x, int y)
{
	if (check_place(info, piece, x, y) == 0)
		return (0);
	if (check_superpose(info, piece, x, y) == 0)
		return (0);
	if (check_superpose_adverse(info, piece, x, y) == 0)
		return (0);
	return (1);
}
Пример #2
0
void			solver(t_fill *fill)
{
	fill->map_size = 2;
	while (fill->map_size * fill->map_size < fill->num_piece * 4)
		fill->map_size++;
	init_map(fill->map_size, fill->map);
	fill->piece = 0;
	while (fill->piece <= fill->num_piece)
	{
		if (check_place(fill->parsing[fill->piece],
					&fill->coord[fill->piece], fill->map))
		{
			place(fill->parsing[fill->piece], &fill->coord[fill->piece],
					fill->map, 'A' + fill->piece);
			fill->piece++;
		}
		else if (check_coord(&fill->coord[fill->piece], fill->map_size))
			update_coord(&fill->coord[fill->piece], fill->map_size);
		else
			solver_bis(fill);
	}
}