# Packing

## Problem Description

Given a rectangular area of a known dimension and a set of squares, each of which has a known dimension, the problem is to pack all the squares into the rectangular area such that no two squares overlap each other. There can be wasted spaces in the rectangular area.

The rectangular area forms a coordinate plane where the left upper corner of the area is the origin, the top edge is the x-axis, and the left edge is the y-axis.

## Predicates

**Input**:`area/2, max_square_num/1, square/2`**Output**:`pos/3`

## Input format

The input contains a fact `area(W,H)` which specifies the dimension of the rectangular area (the top edge is W units and the left edge is H units), a fact `max_square_num(N)` which gives the number of squares to be packed (the squares are numbered from 1 to N), and a fact `square(I,Size)` for each I between 1 and N which gives the size of the square numbered I.

## Output format

The output should contain a fact `pos(I,X,Y)` for each square which gives the coordinates of the left upper corner of the square in the rectangular area. Let W be the width and H the height of the rectangular area, and Size be the size of the square. Then the coordinates X and Y must satisfy:

0 =< X =< W-Size 0 =< Y =< H-Size

## Example(s)

For the following input

area(6,4). max_square_num(3). square(1,4). square(2,2). square(3,2).

one possible solution is:

pos(1,0,0). pos(2,4,0). pos(3,4,2).

## Author(s)

- Author: Neng-Fa Zhou
- Affiliation: CUNY Brooklyn College and Graduate Center, USA