for (int k=0; k<NITER; k++) { // Get neighbours shift(cn_, w, r, 0, 1, CYCLIC); shift(cp_, w, r, 0, -1, CYCLIC); ... etc, copy arrays for 8 neighbours // Life update rule for(int i=0; i<w.length; i++) { switch (cn_[i] + cp_[i] + c_n[i] + c_p[i] + cnn[i] + cnp[i] + cpn[i] + cpp[i]) { case 2 : break; case 3 : w[i] = 1; break; default: w[i] = 0; break; } } }