Skip to content

Instantly share code, notes, and snippets.

@Visgean
Created May 11, 2017 21:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Visgean/960bdbbbc7b99ea4f524738496dc536d to your computer and use it in GitHub Desktop.
Save Visgean/960bdbbbc7b99ea4f524738496dc536d to your computer and use it in GitHub Desktop.
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Iterator;
public class Rabbit {
Integer[][] r;
int n;
public static void main (String[] args) {
int N = Integer.parseInt(args[0]);
Rabbit alex = new Rabbit(N);
alex.init();
System.out.print(alex.toString());
System.out.println(alex.subsequenceIndex(new Integer[] {1,1,0}));
System.out.println(alex.subsequenceIndex(new Integer[] {1,1,1}));
}
public Rabbit (int num){
n = num;
r = new Integer[n][];
}
public void init() {
if (n < 2) {
return ;
}
r[0] = new Integer[] {1};
r[1] = new Integer[] {1, 0};
for (int i = 2; i < r.length ; i++) {
Integer[] combination = new Integer[r[i-1].length + r[i-2].length];
Integer[] prev_1 = r[i-1];
Integer[] prev_2 = r[i-2];
for (int j = 0; j < prev_1.length; j++) {
combination[j] = prev_1[j];
}
for (int j = 0; j < prev_2.length; j++) {
combination[j+prev_1.length] = prev_2[j];
}
r[i] = combination;
}
}
public String toString() {
String base = "";
for (Integer[] integers : r) {
base += Arrays.toString(integers) + "\n";
}
return base;
}
public int subsequenceIndex(Integer[] target) {
for (int i = 0; i < r.length; i++) {
Integer[] candidate = r[i];
if (candidate.length < target.length){
continue;
}
for (int j = 0; j < candidate.length - target.length; j++) {
Integer[] sub = new Integer[target.length];
// lets fill sub:
for (int k = 0; k < target.length; k++) {
sub[k] = candidate[j+k];
}
if(Arrays.equals(target, sub)) {
return i;
}
}
}
return -1;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment