## Hackerrank

I know it is embarassing to post code like this without asymptotic analysis. After taking a strenuous 10 week Machine learning course I am again coding java. This is the Utopia problem which can be solved in one line.

```package com.hackerrank;

import java.io.*;
import java.util.ArrayList;

public class Solution {

private int noOfTestCases;

private ArrayList<Integer> tests = new ArrayList<>();

OutputStream outputStream = System.out;
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));

protected void parseStdin(String[] data){

int test = Integer.parseInt( data[0] );
assert( test >= 1 && test <= 10);
noOfTestCases = test;
for( int i = 1 ; i < data.length ; i ++ ){
int d = Integer.parseInt( data[i] );
assert( d >= 0 && d <= 60);
}
assert( tests.size() == noOfTestCases );
}

public ArrayList<String>  getInput(BufferedReader br) throws IOException {
String line = null;
ArrayList<String> arguments = new ArrayList<>();
while( (line = br.readLine()) != null ){
}
br.close();
return arguments;
}

public static void main( String... argv ) throws IOException {

Solution utopia = new Solution();
ArrayList<String> arguments = utopia.getInput( br );
utopia.parseStdin( arguments.toArray(new String[arguments.size()]));
utopia.test();

}

protected void test() {
assert( 0 != noOfTestCases );
assert( tests.size() == noOfTestCases );
for( Integer test : tests)   {
if( test != 0 ){
if(test % 2  == 0){
growEvenly(test);
}else{
growOddly(test);

}
}else{
pw.println(1);
}
}
pw.close();
}

private void growOddly(int test) {
int odd = 1;
if(test == 1 ){
pw.println(test + 1);
}else{
for(int j = 0,k = test - 1 ; j < k; j = j + 2 ){
odd = odd + odd + 1;
}
pw.println(odd * 2); pw.flush();
}

}

private void growEvenly(int test) {
int even = 1;
for(int j = 0,k = test / 2 ; j < k ; j ++){
even = even * 2 + 1;

}
pw.println(even);  pw.flush();
}
}
```

### Easymock

I have to expect 4 calls to readLine to accomodate null.

```package com.hackerrank;

import org.junit.Assert;
import org.junit.*;

import java.io.IOException;

import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;

public class UtopiaTest {

String[] argv;

Solution solution;

@Before
public void sendInput() throws IOException {
replay(mockInputStream);
solution = new Solution();
argv = solution.getInput(mockInputStream).toArray(new String[3]);
Assert.assertTrue(argv.length == 3);
}

@Test
public void parse(){
solution = new Solution();
solution.parseStdin( argv );
}

@Test
public void test(){
solution = new Solution();
solution.parseStdin( argv );
solution.test();
}
}
```