Epic Systems Interview Question
Developer Program EngineersCountry: United States
area of rectangle = Height x width.
I am assuming that dimensions can only be integeral numbers.
For a given area, factorize it into its prime factors. say S is the set of prime factors.
Calculate power set , there are 2^n-1 such combinations of heights and width that lead to a certain area.
Next up, you just need to rotate the triangle 4 times to get those 4 points.
total complexity is k.2^n where n = |S|
def rectangle(cord, area):
ans = []
for i in range(1, area + 1):
if area % i == 0:
ans = []
x = (i, int(area/i))
ans.append((cord[0], cord[1]))
ans.append((cord[0], cord[1] + x[1]))
ans.append((cord[0] + x[0], cord[0]))
ans.append((cord[0] + x[0], cord[1] + x[1]))
print(ans)
ans = []
ans.append((cord[0], cord[1]));
ans.append((cord[0], cord[1] + x[1]))
ans.append((cord[0] - x[0], cord[0]))
ans.append((cord[0] - x[0], cord[1] + x[1]))
print(ans)
ans = []
ans.append((cord[0], cord[1]))
ans.append((cord[0], cord[1] - x[1]))
ans.append((cord[0] + x[0], cord[0]))
ans.append((cord[0] + x[0], cord[1] - x[1]))
print(ans)
ans = []
ans.append((cord[0], cord[1]))
ans.append((cord[0], cord[1] - x[1]))
ans.append((cord[0] - x[0], cord[0]))
ans.append((cord[0] - x[0], cord[1] - x[1]))
print(ans)
def rectangle(cord, area):
ans = []
for i in range(1, area + 1):
if area % i == 0:
ans = []
x = (i, int(area/i))
ans.append((cord[0], cord[1] + x[1]))
ans.append((cord[0] + x[0], cord[0]))
ans.append((cord[0] + x[0], cord[1] + x[1]))
print(ans)
ans = []
ans.append((cord[0], cord[1] + x[1]))
ans.append((cord[0] - x[0], cord[0]))
ans.append((cord[0] - x[0], cord[1] + x[1]))
print(ans)
ans = []
ans.append((cord[0], cord[1] - x[1]))
ans.append((cord[0] + x[0], cord[0]))
ans.append((cord[0] + x[0], cord[1] - x[1]))
print(ans)
ans = []
ans.append((cord[0], cord[1] - x[1]))
ans.append((cord[0] - x[0], cord[0]))
ans.append((cord[0] - x[0], cord[1] - x[1]))
print(ans)
wrote it in python 3.X
def rectangle(cord, area):
ans = []
for i in range(1, area + 1):
if area % i == 0:
ans = []
x = (i, int(area/i))
ans.append((cord[0], cord[1] + x[1]))
ans.append((cord[0] + x[0], cord[0]))
ans.append((cord[0] + x[0], cord[1] + x[1]))
print(ans)
ans = []
ans.append((cord[0], cord[1] + x[1]))
ans.append((cord[0] - x[0], cord[0]))
ans.append((cord[0] - x[0], cord[1] + x[1]))
print(ans)
ans = []
ans.append((cord[0], cord[1] - x[1]))
ans.append((cord[0] + x[0], cord[0]))
ans.append((cord[0] + x[0], cord[1] - x[1]))
print(ans)
ans = []
ans.append((cord[0], cord[1] - x[1]))
ans.append((cord[0] - x[0], cord[0]))
ans.append((cord[0] - x[0], cord[1] - x[1]))
print(ans)
rectangle([0,0], 12)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Rectangle_permutations {
public static void main(String[] args) throws IOException {
int x_coord, y_coord, Area;
int x1,x2,x3,y1,y2,y3;
System.out.println("Enter X-coordinate");
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
x_coord = Integer.parseInt(buf.readLine());
System.out.println("Enter Y-coordinate");
BufferedReader buf2 = new BufferedReader(new InputStreamReader(System.in));
y_coord = Integer.parseInt(buf2.readLine());
System.out.println("Enter Area");
BufferedReader buf3 = new BufferedReader(new InputStreamReader(System.in));
Area = Integer.parseInt(buf3.readLine());
x1 = x_coord + Area;
y1 = y_coord;
x2 = x_coord + Area;
y2 = y_coord + 1;
x3 = x_coord;
y3 = y_coord + 1;
System.out.println("("+x1+","+y1+")"+"("+x2+","+y2+")"+"("+x3+","+y3+")");
x1 = x_coord - Area;
y1 = y_coord;
x2 = x_coord - Area;
y2 = y_coord - 1;
x3 = x_coord;
y3 = y_coord - 1;
System.out.println("("+x1+","+y1+")"+"("+x2+","+y2+")"+"("+x3+","+y3+")");
for(int i=2;i<=Area/2;i++)
{
if(Area%i == 0)
{
int j = Area/i;
x1 = x_coord + i;
y1 = y_coord;
x2 = x_coord + i;
y2 = y_coord + j;
x3 = x_coord;
y3 = y_coord + j;
System.out.println("("+x1+","+y1+")"+"("+x2+","+y2+")"+"("+x3+","+y3+")");
x1 = x_coord - i;
y1 = y_coord;
x2 = x_coord - i;
y2 = y_coord - j;
x3 = x_coord;
y3 = y_coord - j;
System.out.println("("+x1+","+y1+")"+"("+x2+","+y2+")"+"("+x3+","+y3+")");
}
}
}
}
public void rectPerm(int x, int y, int A) {
System.out.println("(" +x+","+y+")");
int [] delta_x = {x,x+A,x,x+A,x-A,x,x-A};
int [] delta_y = {y,y,y+A,y+A,y,y-A,y-A};
for (int i = 0; i < delta_y.length; i++) {
if(delta_x[i] == x && delta_y[i] == y){
}else{
System.out.println("(" +delta_x[i] + ":" + delta_y[i] + ")");
}
}
}
- shrey.haria May 17, 2015