32 lines
892 B
Java
32 lines
892 B
Java
public class Life{
|
|
private static char[] trans = "___#_##_".toCharArray();
|
|
|
|
private static int v(StringBuilder cell, int i){
|
|
return (cell.charAt(i) != '_') ? 1 : 0;
|
|
}
|
|
|
|
public static boolean evolve(StringBuilder cell){
|
|
boolean diff = false;
|
|
StringBuilder backup = new StringBuilder(cell.toString());
|
|
|
|
for(int i = 1; i < cell.length() - 3; i++){
|
|
/* use left, self, right as binary number bits for table index */
|
|
backup.setCharAt(i, trans[v(cell, i - 1) * 4 + v(cell, i) * 2
|
|
+ v(cell, i + 1)]);
|
|
diff = diff || (backup.charAt(i) != cell.charAt(i));
|
|
}
|
|
|
|
cell.delete(0, cell.length());//clear the buffer
|
|
cell.append(backup);//replace it with the new generation
|
|
return diff;
|
|
}
|
|
|
|
public static void main(String[] args){
|
|
StringBuilder c = new StringBuilder("_###_##_#_#_#_#__#__\n");
|
|
|
|
do{
|
|
System.out.printf(c.substring(1));
|
|
}while(evolve(c));
|
|
}
|
|
}
|