Problem Statement |
| | We want to display a scatterplot in a 1000x1000 window. However, our points may have x and y values anywhere between -1,000,000,000 and 1,000,000,000. So, in order to display our data in a reasonable fashion, we want to make it fit in the window. Your task is, given the x and y values of the data, scale and translate the data so that the lowest x value is 0, and the highest is 1000. Do the same thing for the y values, being careful to preserve the relative distances in both the x and y directions. For example, if x = {-100, 0, 50, 100}, then it should be changed to {0,500,750,1000}. Note that changing the points may result in non-integral values, which should be rounded to the nearest integer (.5 rounds up). The return value should be a String[], each of whose elements is formatted as "<x> <y>", where <x> and <y> are the scaled and translated values of the corresponding elements of the input. <x> and <y> should be separated by exactly one space and have no extra leading zeros. |
| |
Definition |
| | | Class: | Display | | Method: | transform | | Parameters: | int[], int[] | | Returns: | String[] | | Method signature: | String[] transform(int[] x, int[] y) | | (be sure your method is public) |
|
| |
|
| |
Constraints |
| - | Each element of x and y will be between -1,000,000,000 and 1,000,000,000, inclusive. |
| - | x will contain at least two distinct values. |
| - | y will contain at least two distinct values. |
| - | x and y will contain the same number of elements. |
| - | x and y will each contain between 2 and 50 elements, inclusive. |
| |
Examples |
| 0) | |
| | {-100, 0, 50, 100} | {-100, 0, 50, 100} |
| Returns: { "0 0", "500 500", "750 750", "1000 1000" } | | If we translate all the points +100 in both the x and y directions, and then scale all the coordinates up by a factor of 5, we find that they meet our requirements. |
|
|
| 1) | |
| | | Returns: { "0 0", "1000 1000", "1 0" } | |
|
| 2) | |
| | {-1000000000,1000000000,500000,499999} | {-1000000000,1000000000,500000,499999} |
| Returns: { "0 0", "1000 1000", "500 500", "500 500" } | |
|
| 3) | |
| | {-53,652,-6132,673,74,-473,373,736363,234,234,234} | {-6464,36464,-43,373,363,-37633,2022,-644,2520,2520,2520} |
| Returns:
{ "8 421",
"9 1000",
"0 507",
"9 513",
"8 513",
"8 0",
"9 535",
"1000 499",
"9 542",
"9 542",
"9 542" } | |
|
| 4) | |
| | {0,1001,2000} | {0,999,2000} |
| Returns: { "0 0", "501 500", "1000 1000" } | | Be sure to round up when the fractional part is .5. |
|
|