119 lines
2.7 KiB
Plaintext
119 lines
2.7 KiB
Plaintext
width <- 10;
|
|
height <- 10;
|
|
|
|
field <- [width*height];
|
|
field2 <- [width*height];
|
|
|
|
field[1] = 1;
|
|
field[12] = 1;
|
|
field[20] = 1;
|
|
field[21] = 1;
|
|
field[22] = 1;
|
|
|
|
|
|
runs <- 0;
|
|
loop runs < 20; runs = runs + 1 {
|
|
// Print the field
|
|
y <- 0;
|
|
loop y < height; y = y+1 {
|
|
x <- 0;
|
|
loop x < width; x = x+1 {
|
|
if field[y*height + x] {
|
|
print "# ";
|
|
} else {
|
|
print ". ";
|
|
}
|
|
}
|
|
print "\n";
|
|
}
|
|
print "\n";
|
|
|
|
// Update from field into field2
|
|
y <- 0;
|
|
loop y < height; y = y+1 {
|
|
x <- 0;
|
|
loop x < width; x = x+1 {
|
|
|
|
neighbours <- 0;
|
|
|
|
if y > 0 {
|
|
if x > 0 {
|
|
// Top left
|
|
if field[(y-1)*width + (x-1)] {
|
|
neighbours = neighbours + 1;
|
|
}
|
|
}
|
|
|
|
// Top
|
|
if field[(y-1)*width + x] {
|
|
neighbours = neighbours + 1;
|
|
}
|
|
|
|
if x < width-1 {
|
|
// Top right
|
|
if field[(y-1)*width + (x+1)] {
|
|
neighbours = neighbours + 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
if x > 0 {
|
|
// Left
|
|
if field[y*width + (x-1)] {
|
|
neighbours = neighbours + 1;
|
|
}
|
|
}
|
|
|
|
if x < width-1 {
|
|
// Right
|
|
if field[y*width + (x+1)] {
|
|
neighbours = neighbours + 1;
|
|
}
|
|
}
|
|
|
|
|
|
if y < height-1 {
|
|
if x > 0 {
|
|
// Bottom left
|
|
if field[(y+1)*width + (x-1)] {
|
|
neighbours = neighbours + 1;
|
|
}
|
|
}
|
|
|
|
// Bottom
|
|
if field[(y+1)*width + x] {
|
|
neighbours = neighbours + 1;
|
|
}
|
|
|
|
if x < width-1 {
|
|
// Bottom right
|
|
if field[(y+1)*width + (x+1)] {
|
|
neighbours = neighbours + 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if neighbours < 2 || neighbours > 3 {
|
|
field2[y*width + x] = 0;
|
|
} else {
|
|
if neighbours == 3 {
|
|
field2[y*width + x] = 1;
|
|
} else {
|
|
field2[y*width + x] = field[y*width + x];
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// Transfer from field2 to field
|
|
y <- 0;
|
|
loop y < height; y = y+1 {
|
|
x <- 0;
|
|
loop x < width; x = x+1 {
|
|
field[y*width + x] = field2[y*width + x];
|
|
}
|
|
}
|
|
}
|