Problem Statement
The coordinates of a point are given in positive feet, measured from the upper left corner of its face of the building. For example, if w were 300 and the two points were (xfront,yfront) = (25,75) and (xright,yright) = (275,500) they would appear approximately at the locations labeled p and q respectively in the picture.
___200____ / /| / / | / / | w=300 300 | / / | / / | /___200___/ | | | | | | | |p | | | | | | | q| | | | | | | | | | | | |
Our wire must run along the outside of the building, but it may go over the top and along any sides. Wires come in integer lengths and we want to have as little slack as possible.
Create a class Skyscraper that contains a method wire that is given five int values w, xfront,yfront and xright,yright and that returns the length of the shortest wire that will reach between the two points. If a fractional distance is required, return the next higher integer.
Definition
- Class:
- Skyscraper
- Method:
- wire
- Parameters:
- int, int, int, int, int
- Returns:
- int
- Method signature:
- int wire(int w, int xfront, int yfront, int xright, int yright)
- (be sure your method is public)
Notes
- warning: the shortest wire may run along any of the sides of the building, not just the ones that appear in the picture.
Constraints
- w will be between 1 and 1000 inclusive
- xfront will be between 0 and 200 inclusive
- yfront will be between 0 and 1000 inclusive
- xright will be between 0 and w inclusive
- yright will be between 0 and 1000 inclusive
Examples
300
200
5
0
5
Returns: 0
���� These two points are the same point, located on the edge between the front and right side of the building.
300
103
50
29
50
Returns: 126
���� A horizontal wire is the shortest. It must traverse 97 feet along the front and then 29 feet along the right side.
300
103
5
29
5
Returns: 108
A horizontal wire is not the shortest. The shortest wire goes diagonally up the front, across a corner of the top, and diagonally down to 29,5 on the right side. This will require about 107.52 feet of wire, so we will need a 108-foot wire.
500
100
0
500
100
Returns: 539
399
0
270
399
17
Returns: 628
600
0
800
100
800
Returns: 300
//int w=600,x=0,y=800,xx=100,yy=800; //90,000 case ab //int w=600,x=100,y=0,xx=500,yy=100; //290000, case acb //int w=50,x=10,y=0,xx=50,yy=10; //39,700 casea cAb // //int w=600,x=0,y=100,xx=500,yy=100; //410,000 aBcb // int w=399,x=0,y=270,xx=399,yy=17; //393,956 aBcAb
600
100
0
500
100
Returns: 539
50
10
0
50
10
Returns: 200
600
0
100
500
100
Returns: 641
399
0
270
399
17
Returns: 628
600
2
800
101
801
Returns: 300
399
0
270
399
17
Returns: 628
500
0
50
500
50
Returns: 584
200
200
0
100
100
Returns: 142
1000
0
100
400
0
Returns: 500
300
200
0
4
7
Returns: 9
1000
0
100
500
0
Returns: 584
399
1
270
399
17
Returns: 629