public List<TOE> next() { List<TOE> ret = new LinkedList<TOE>(); for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) // if(G.get(i*M+j)) { BitSet Gnew = (BitSet) (G.clone()); int[] x = {0, 1, -1, 0, 0}; int[] y = {0, 0, 0, 1, -1}; for (int k = 0; k < 5; k++) { int xi = x[k]; int yi = y[k]; if ((i + xi) >= 0 && (i + xi) < N && (j + yi) >= 0 && (j + yi) < M) { Gnew.flip((i + xi) * M + (j + yi)); } } TOE to = new TOE(N, M, Gnew); to.mx = i; to.my = j; ret.add(to); } return ret; }