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); }
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); } }