public class Repeating { public static void main(String[] args) { for (int i = 0; i < 30; i++) { System.out.println (i+":\t"+noinitialrepeats(i)+"\t"+bifixfree(i)); } } public static long noinitialrepeats(int n) { long T = 0; for (int X = 0; X < (1<<n); X++) { boolean nonrepeating = true; for (int r = 2; r <= n && nonrepeating; r+=2) { boolean repeats = true; for (int j = 0; j < r/2; j++) { if ((X>>j)%2!=(X>>(j+r/2))%2) repeats=false; } if (repeats) nonrepeating=false; } if (nonrepeating) { T++; } } return T; } public static long bifixfree(int n) { long T = 0; for (int X = 0; X < (1<<n); X++) { boolean nonrepeating = true; for (int r = 1; r < n && nonrepeating; r+=1) { boolean repeats = true; for (int j = 0; j < r; j++) { if ((X>>j)%2!=(X>>(n-r+j))%2) repeats=false; } if (repeats) nonrepeating=false; } if (nonrepeating) { T++; } } return T; } }