 # ARRAY_IMPL1

Predict the output of the following program :

``````
int* performOps(int *A, int len, int *blen) {
int i;
*blen = len * 2;
int *B = (int *)malloc((*blen) * sizeof(int));
for (i = 0; i < len; i++) {
B[i] = A[i];
B[i + len] = A[(len - i) % len];
}
return B;
}

``````

Lets say performOps was called with `len = 4`, and `A : [5, 10, 2, 1]`.

What would be the output of the following call :

``````
int blen;
int *B = performOps(A, len, &blen);
int i;
for (i = 0; i < blen; i++) {
printf("%d ", B[i]);
}
``````
``````
vector<int> performOps(vector<int> A) {
vector<int> B(2 * A.size(), 0);
for (int i = 0; i < A.size(); i++) {
B[i] = A[i];
B[i + A.size()] = A[(A.size() - i) % A.size()];
}
return B;
}

``````

Lets say performOps was called with `A : [5, 10, 2, 1]`. What would be the output of the following call :

``````
vector<int> B = performOps(A);
for (int i = 0; i < B.size(); i++) {
cout<<B[i]<<" ";
}

``````
``````
ArrayList<Integer> performOps(ArrayList<Integer> A) {
ArrayList<Integer> B = new ArrayList<Integer>();
for (int i = 0; i < 2 * A.size(); i++) B.add(0);
for (int i = 0; i < A.size(); i++) {
B.set(i, A.get(i));
B.set(i + A.size(), A.get((A.size() - i) % A.size()));
}
return B;
}

``````

Lets say performOps was called with `A : [5, 10, 2, 1]`. What would be the output of the following call :

``````
ArrayList<Integer> B = performOps(A);
for (int i = 0; i < B.size(); i++) {
System.out.print(B.get(i) + " ");
}

``````
``````def performOps(A):
blen = 2 * len(A)
B = *blen
for i in xrange(len(A)):
B[i] = A[i]
B[i + len(A)] = A[(len(A) - i) % len(A)]
return B

``````

Lets say performOps was called with `A : [5, 10, 2, 1]`. What would be the output of the following call :

``````B = performOps(A)
for i in xrange(len(B)):
print B[i],
``````
``````function performOps(A){
B = new Array(2 * A.length)

for (var i = 0; i < A.length; i++) {
B[i] = A[i];
B[i + A.length] = A[(A.length - i) % A.length];
}
return B;
}
``````

Lets say performOps was called with `A : [5, 10, 2, 1]`. What would be the output of the following call :

``````B = performOps(A)
for (var i = 0; i < B.length; i++) {
process.stdout.write(B[i]+" ");
}
``````