package com.interview.array;
import java.util.ArrayList;
import java.util.List;
/**
* Date 07/20/2015
* @author Tushar Roy
*
* Given a sequence like
* 1 11 21 1211 111221 312211
* Print nth element of this sequence.
*/
public class NthElementOfCountNumberSequence {
public List<Integer> nthElement(int n) {
int i = 1;
List<Integer> current = new ArrayList<>();
current.add(1);
List<Integer> result = new ArrayList<>();
while(i < n) {
int count = 1;
int index = 0;
for(int j = 1; j < current.size(); j++) {
if(current.get(index) == current.get(j)) {
count++;
} else {
result.add(count);
result.add(current.get(index));
count = 1;
index = j;
}
}
result.add(count);
result.add(current.get(index));
current = result;
result = new ArrayList<>();
i++;
}
return current;
}
public static void main(String args[]) {
NthElementOfCountNumberSequence nes = new NthElementOfCountNumberSequence();
for(int i = 1 ; i <= 10; i++) {
List<Integer> result = nes.nthElement(i);
result.forEach(System.out::print);
System.out.println();
}
}
}