# Generate all integral points lying inside a rectangle

• Last Updated : 22 Oct, 2020

Given a rectangle of length L, and width, W, the task is to generate all integral coordinates (X, Y) that lie within a rectangle pf dimensions L * W having one of its vertexes in the origin (0, 0).

Examples:

Input: L = 3, W = 2
Output: (0, 0) (0, 1) (1, 0) (1, 1) (2, 0) (2, 1)
Explanation: Total number of integral coordinates existing within the rectangle are L Ă— W = 6. Therefore, the output is (0, 0) (0, 1) (1, 0) (1, 1) (2, 0) (2, 1).

Input: L = 5, W = 3
Output: (0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) (2, 0) (2, 1) (2, 2) (3, 0) (3, 1) (3, 2) (4, 0) (4, 1) (4, 2)

Approach: The problem can be solved by generating all integral numbers from the range 0 to L for X-coordinates and from 0 to W for Y-coordinates using the rand() function. Follow the steps below to solve the problem:

1. Create a set of pairs to store all the coordinates(X, Y) that lie within the rectangle.
2. Use the equation rand() % L to generate all the integers lying between 0 to L and rand() % W to generate all the integers lying between 0 to W.
3. Print all possible L Ă— W coordinates (X, Y) that lie within the rectangle.

Below is the implementation of the above approach:

## C++

 `// C++ program to implement``// the above approach``#include ``using` `namespace` `std;` `// Function to generate coordinates``// lying within the rectangle``void` `generatePoints(``int` `L, ``int` `W)``{``    ``// Store all possible coordinates``    ``// that lie within the rectangle``    ``set > hash;` `    ``// Stores the number of possible``    ``// coordinates that lie within``    ``// the rectangle``    ``int` `total = (L * W);` `    ``// Use current time as seed``    ``// for random generator``    ``srand``(``time``(0));` `    ``// Generate all possible``    ``// coordinates``    ``while` `(total--) {``        ``// Generate all possible``        ``// X-coordinates``        ``int` `X = ``rand``() % L;` `        ``// Generate all possible``        ``// Y-coordinates``        ``int` `Y = ``rand``() % W;` `        ``// If coordinates(X, Y) has``        ``// not been generated already``        ``while` `(hash.count({ X, Y })) {``            ``X = ``rand``() % L;``            ``Y = ``rand``() % W;``        ``}` `        ``// Insert the coordinates(X, Y)``        ``hash.insert({ X, Y });``    ``}` `    ``// Print the coordinates``    ``for` `(``auto` `points : hash) {``        ``cout << ``"("` `<< points.first << ``", "``             ``<< points.second << ``") "``;``    ``}``}` `// Driver Code``int` `main()``{``    ``// Rectangle dimensions``    ``int` `L = 3, W = 2;` `    ``generatePoints(L, W);``}`

## Python3

 `# Python3 program to implement``# the above approach``import` `time``import` `random` `random.seed(time.time())` `# Function to generate coordinates``# lying within the rectangle``def` `generatePoints(L, W):``    ` `    ``# Store all possible coordinates``    ``# that lie within the rectangle``    ``hash` `=` `{}` `    ``# Stores the number of possible``    ``# coordinates that lie within``    ``# the rectangle``    ``total ``=` `(L ``*` `W)` `    ``# Generate all possible``    ``# coordinates``    ``for` `i ``in` `range``(total):``        ` `        ``# Generate all possible``        ``# X-coordinates``        ``X ``=` `random.randint(``0``, L) ``%` `L` `        ``# Generate all possible``        ``# Y-coordinates``        ``Y ``=` `random.randint(``0``, W) ``%` `W` `        ``# If coordinates(X, Y) has``        ``# not been generated already``        ``while` `((X, Y) ``in` `hash``):``            ``X ``=` `random.randint(``0``, L) ``%` `L``            ``Y ``=` `random.randint(``0``, W) ``%` `W` `        ``# Insert the coordinates(X, Y)``        ``hash``[(X, Y)] ``=` `1` `    ``# Print the coordinates``    ``for` `points ``in` `sorted``(``hash``):``        ``print``(``"("``, points[``0``],``             ``", "``, points[``1``],``             ``") "``, end ``=` `"")` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ` `    ``# Rectangle dimensions``    ``L, W ``=` `3``, ``2` `    ``generatePoints(L, W)` `# This code is contributed by mohit kumar 29`

## C#

 `// C# program to implement``// the above approach``using` `System;``using` `System.Collections;``using` `System.Collections.Generic;` `class` `GFG{` `public` `class` `store : IComparer>``{``    ``public` `int` `Compare(KeyValuePair<``int``, ``int``> x,``                       ``KeyValuePair<``int``, ``int``> y)``    ``{``        ``if` `(x.Key != y.Key)``        ``{``            ``return` `x.Key.CompareTo(y.Key);   ``        ``}``        ``else``        ``{``            ``return` `x.Value.CompareTo(y.Value);   ``        ``}``    ``}``}``     ` `// Function to generate coordinates``// lying within the rectangle``static` `void` `generatePoints(``int` `L, ``int` `W)``{``    ` `    ``// Store all possible coordinates``    ``// that lie within the rectangle``    ``SortedSet> hash = ``new` `SortedSet>(``new` `store());`` ` `    ``// Stores the number of possible``    ``// coordinates that lie within``    ``// the rectangle``    ``int` `total = (L * W);`` ` `    ``// For random generator``    ``Random rand = ``new` `Random();`` ` `    ``// Generate all possible``    ``// coordinates``    ``while` `((total--) != 0)``    ``{``        ` `        ``// Generate all possible``        ``// X-coordinates``        ``int` `X = rand.Next() % L;`` ` `        ``// Generate all possible``        ``// Y-coordinates``        ``int` `Y = rand.Next() % W;`` ` `        ``// If coordinates(X, Y) has``        ``// not been generated already``        ``while` `(hash.Contains(``            ``new` `KeyValuePair<``int``, ``int``>(X, Y)))``        ``{``            ``X = rand.Next() % L;``            ``Y = rand.Next() % W;``        ``}`` ` `        ``// Insert the coordinates(X, Y)``        ``hash.Add(``new` `KeyValuePair<``int``, ``int``>(X, Y));``    ``}`` ` `    ``// Print the coordinates``    ``foreach``(KeyValuePair<``int``, ``int``> x ``in` `hash)``    ``{``        ``Console.Write(``"("` `+ x.Key + ``", "` `+``                          ``x.Value + ``") "``);``    ``}``}` `// Driver Code``public` `static` `void` `Main(``string``[] args)``{``    ` `    ``// Rectangle dimensions``    ``int` `L = 3, W = 2;`` ` `    ``generatePoints(L, W);``}``}` `// This code is contributed by rutvik_56`
Output:
```(0, 0) (0, 1) (1, 0) (1, 1) (2, 0) (2, 1)

```

Time Complexity: O(L * W)
Auxiliary Space: O(L * W)

My Personal Notes arrow_drop_up