Problem Statement
The above describes a level-1 transform. To perform a level-2 transform, we repeat the above procedure on the first half of the sequence produced by the level-1 transform. The second half of the sequence remains unchanged from the previous level. This pattern continues for higher level transforms (i.e., a level-3 transform operates with the first quarter of the sequence, and so on). Note that this is always possible when the number of elements is a power of 2.
See the examples for clarification.
Create a class Haar1D with a method transform which takes a
Definition
- Class:
- Haar1D
- Method:
- transform
- Parameters:
- int[], int
- Returns:
- int[]
- Method signature:
- int[] transform(int[] data, int L)
- (be sure your method is public)
Constraints
- data will contain exactly 2, 4, 8, 16 or 32 elements.
- Each element of data will be between 0 and 100 inclusive.
- L will be between 1 and log2(# of elements in data) inclusive.
Examples
{1, 2, 3, 5}
1
Returns: {3, 8, -1, -2 }
Start by forming 3=1+2, the sum of the first pair; 8=3+5, the sum of the second pair; -1=1-2, the difference of the first pair; and finally, -2=3-5, the difference of the second pair. To form the output, we create a sequence of the sums in order, and the differences in order, to obtain {3, 8, -1, -2} as the level-1 transform.
{1, 2, 3, 5}
2
Returns: {11, -5, -1, -2 }
From the above example, the level-1 transform is given by {3, 8, -1, -2} So, the level-2 transform of {1, 2, 3, 5} is simply {11, -5, -1, -2} (11=3+8, -5=3-8).
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
3
Returns: {8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{1, 2, 3, 4, 4, 3, 2, 1}
3
Returns: {20, 0, -4, 4, -1, -1, 1, 1 }
{1,2}
1
Returns: {3, -1 }
{27, 31}
1
Returns: {58, -4 }
{70, 45, 72, 88}
1
Returns: {115, 160, 25, -16 }
{21, 22, 56, 91}
2
Returns: {190, -104, -1, -35 }
{64, 90, 2, 81, 96, 49, 91, 7}
1
Returns: {154, 83, 145, 98, -26, -79, 47, 84 }
{30, 13, 76, 6, 33, 16, 96, 63}
2
Returns: {125, 208, -39, -110, 17, 70, 17, 33 }
{90, 26, 26, 81, 67, 75, 32, 15}
3
Returns: {412, 34, 9, 95, 64, -55, -8, 17 }
{62, 15, 74, 99, 4, 33, 16, 11, 1, 21, 82, 15, 90, 37, 43, 25}
1
Returns: {77, 173, 37, 27, 22, 97, 127, 68, 47, -25, -29, 5, -20, 67, 53, 18 }
{94, 47, 46, 28, 39, 89, 75, 4, 28, 62, 69, 89, 34, 55, 81, 24}
2
Returns: {215, 207, 248, 194, 67, 49, -68, -16, 47, 18, -50, 71, -34, -20, -21, 57 }
{11, 32, 87, 12, 76, 99, 53, 59, 63, 49, 59, 98, 9, 24, 76, 71}
3
Returns: {429, 449, -145, 89, -56, 63, -45, -114, -21, 75, -23, -6, 14, -39, -15, 5 }
{66, 85, 20, 84, 0, 29, 60, 99, 76, 51, 3, 83, 82, 77, 45, 70}
4
Returns: {930, -44, 67, -61, 47, -130, 41, 44, -19, -64, -29, -39, 25, -80, 5, -25 }
{98, 73, 9, 60, 60, 69, 50, 19, 24, 75, 53, 97, 83, 46, 4, 23, 37, 80, 67, 96, 74, 86, 29, 46, 67, 21, 66, 67, 24, 27, 84, 97}
1
Returns: {171, 69, 129, 69, 99, 150, 129, 27, 117, 163, 160, 75, 88, 133, 51, 181, 25, -51, -9, 31, -51, -44, 37, -19, -43, -29, -12, -17, 46, -1, -3, -13 }
{22, 67, 76, 54, 49, 94, 76, 2, 75, 53, 24, 55, 7, 42, 36, 86, 13, 37, 94, 64, 86, 12, 48, 69, 48, 54, 40, 23, 39, 99, 50, 74}
2
Returns: {219, 221, 207, 171, 208, 215, 165, 262, -41, 65, 49, -73, -108, -19, 39, 14, -45, 22, -45, 74, 22, -31, -35, -50, -24, 30, 74, -21, -6, 17, -60, -24 }
{98, 96, 69, 84, 99, 29, 95, 49, 21, 93, 75, 92, 42, 56, 67, 96, 15, 15, 50, 67, 24, 64, 73, 24, 83, 84, 47, 10, 69, 85, 86, 1}
3
Returns: {619, 542, 332, 465, 75, 20, -38, -17, 41, -16, -53, -65, -87, -9, 110, 67, 2, -15, 70, 46, -72, -17, -14, -29, 0, -17, -40, 49, -1, 37, -16, 85 }
{56, 95, 5, 18, 32, 31, 57, 26, 84, 54, 46, 9, 14, 33, 85, 14, 83, 26, 26, 62, 44, 0, 52, 92, 51, 99, 47, 69, 24, 84, 24, 2}
4
Returns: {659, 785, -19, -15, 28, 47, 9, 132, 128, -20, 83, -52, 21, -100, 34, 82, -39, -13, 1, 31, 30, 37, -19, 71, 57, -36, 44, -40, -48, -22, -60, 22 }
{41, 53, 45, 1, 37, 61, 7, 30, 0, 51, 21, 83, 15, 23, 68, 32, 69, 35, 50, 83, 66, 83, 24, 83, 47, 39, 45, 15, 79, 96, 88, 34}
5
Returns: {1504, -368, -18, 50, 5, 17, -19, -151, 48, 61, -53, -62, -29, 42, 26, 53, -12, 44, -24, -23, -51, -62, -8, 36, 34, -33, -17, -59, 8, 30, -17, 54 }
{14, 11}
1
Returns: {25, 3 }
{89, 57, 68, 82}
1
Returns: {146, 150, 32, -14 }
{89, 57, 68, 82}
2
Returns: {296, -4, 32, -14 }
{77, 86, 22, 51, 22, 69, 2, 76}
1
Returns: {163, 73, 91, 78, -9, -29, -47, -74 }
{77, 86, 22, 51, 22, 69, 2, 76}
2
Returns: {236, 169, 90, 13, -9, -29, -47, -74 }
{77, 86, 22, 51, 22, 69, 2, 76}
3
Returns: {405, 67, 90, 13, -9, -29, -47, -74 }
{85, 67, 42, 60, 93, 42, 79, 79, 18, 35, 81, 99, 84, 44, 74, 24}
1
Returns: {152, 102, 135, 158, 53, 180, 128, 98, 18, -18, 51, 0, -17, -18, 40, 50 }
{85, 67, 42, 60, 93, 42, 79, 79, 18, 35, 81, 99, 84, 44, 74, 24}
2
Returns: {254, 293, 233, 226, 50, -23, -127, 30, 18, -18, 51, 0, -17, -18, 40, 50 }
{85, 67, 42, 60, 93, 42, 79, 79, 18, 35, 81, 99, 84, 44, 74, 24}
3
Returns: {547, 459, -39, 7, 50, -23, -127, 30, 18, -18, 51, 0, -17, -18, 40, 50 }
{85, 67, 42, 60, 93, 42, 79, 79, 18, 35, 81, 99, 84, 44, 74, 24}
4
Returns: {1006, 88, -39, 7, 50, -23, -127, 30, 18, -18, 51, 0, -17, -18, 40, 50 }
{92, 79, 52, 64, 79, 87, 44, 62, 92, 45, 18, 76, 12, 3, 0, 49, 95, 67, 87, 72, 68, 32, 33, 54, 52, 15, 79, 25, 47, 29, 15, 75}
1
Returns: {171, 116, 166, 106, 137, 94, 15, 49, 162, 159, 100, 87, 67, 104, 76, 90, 13, -12, -8, -18, 47, -58, 9, -49, 28, 15, 36, -21, 37, 54, 18, -60 }
{92, 79, 52, 64, 79, 87, 44, 62, 92, 45, 18, 76, 12, 3, 0, 49, 95, 67, 87, 72, 68, 32, 33, 54, 52, 15, 79, 25, 47, 29, 15, 75}
2
Returns: {287, 272, 231, 64, 321, 187, 171, 166, 55, 60, 43, -34, 3, 13, -37, -14, 13, -12, -8, -18, 47, -58, 9, -49, 28, 15, 36, -21, 37, 54, 18, -60 }
{92, 79, 52, 64, 79, 87, 44, 62, 92, 45, 18, 76, 12, 3, 0, 49, 95, 67, 87, 72, 68, 32, 33, 54, 52, 15, 79, 25, 47, 29, 15, 75}
3
Returns: {559, 295, 508, 337, 15, 167, 134, 5, 55, 60, 43, -34, 3, 13, -37, -14, 13, -12, -8, -18, 47, -58, 9, -49, 28, 15, 36, -21, 37, 54, 18, -60 }
{92, 79, 52, 64, 79, 87, 44, 62, 92, 45, 18, 76, 12, 3, 0, 49, 95, 67, 87, 72, 68, 32, 33, 54, 52, 15, 79, 25, 47, 29, 15, 75}
4
Returns: {854, 845, 264, 171, 15, 167, 134, 5, 55, 60, 43, -34, 3, 13, -37, -14, 13, -12, -8, -18, 47, -58, 9, -49, 28, 15, 36, -21, 37, 54, 18, -60 }
{92, 79, 52, 64, 79, 87, 44, 62, 92, 45, 18, 76, 12, 3, 0, 49, 95, 67, 87, 72, 68, 32, 33, 54, 52, 15, 79, 25, 47, 29, 15, 75}
5
Returns: {1699, 9, 264, 171, 15, 167, 134, 5, 55, 60, 43, -34, 3, 13, -37, -14, 13, -12, -8, -18, 47, -58, 9, -49, 28, 15, 36, -21, 37, 54, 18, -60 }
{40, 40}
1
Returns: {80, 0 }
{47, 47, 47, 47}
1
Returns: {94, 94, 0, 0 }
{48, 48, 48, 48}
2
Returns: {192, 0, 0, 0 }
{60, 60, 60, 60, 60, 60, 60, 60}
1
Returns: {120, 120, 120, 120, 0, 0, 0, 0 }
{96, 96, 96, 96, 96, 96, 96, 96}
2
Returns: {384, 384, 0, 0, 0, 0, 0, 0 }
{72, 72, 72, 72, 72, 72, 72, 72}
3
Returns: {576, 0, 0, 0, 0, 0, 0, 0 }
{50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}
1
Returns: {100, 100, 100, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, 0, 0, 0 }
{71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71}
2
Returns: {284, 284, 284, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}
3
Returns: {544, 544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88}
4
Returns: {1408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72}
1
Returns: {144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97}
2
Returns: {388, 388, 388, 388, 388, 388, 388, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97}
3
Returns: {776, 776, 776, 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95}
4
Returns: {1520, 1520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}
5
Returns: {3200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
{1, 2, 3, 4, 4, 3, 2, 1 }
3
Returns: {20, 0, -4, 4, -1, -1, 1, 1 }
{1, 2, 3, 5, 6, 8, 9, 7 }
3
Returns: {41, -19, -5, -2, -1, -2, -2, 2 }
{94, 47, 46, 28, 39, 89, 75, 4, 28, 62, 69, 89, 34, 55, 81, 24 }
2
Returns: {215, 207, 248, 194, 67, 49, -68, -16, 47, 18, -50, 71, -34, -20, -21, 57 }
{1, 100, 33, 55, 66, 22, 44, 99, 88, 45, 36, 84, 92, 15, 36, 85 }
4
Returns: {901, -61, -42, 25, 13, -55, 13, -14, -99, -22, 44, -55, 43, -48, 77, -49 }
{94, 47, 46, 28, 39, 89, 75, 4, 28, 62, 69, 89, 34, 55, 81, 24 }
3
Returns: {422, 442, 8, 54, 67, 49, -68, -16, 47, 18, -50, 71, -34, -20, -21, 57 }
{12, 34, 4, 8, 32, 42, 18, 23, 12, 2, 23, 12, 12, 13, 14, 12 }
3
Returns: {173, 100, -57, -2, 34, 33, -21, -1, -22, -4, -10, -5, 10, 11, -1, 2 }
{1, 2, 3, 5, 6, 8, 9, 7, 10, 11, 12, 13, 14, 15, 16, 17 }
4
Returns: {149, -67, -19, -16, -5, -2, -4, -4, -1, -2, -2, 2, -1, -1, -1, -1 }