#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define A(i,j) a[y*j+i]
#define T(i,j) temp[y*j+i]
#define M(i,j) maske[y*j+i]
void random_array(int *a, int x, int y)
{
int i, j;
for (i = 0; i < y; i++)
{
for (j = 0; j < x; j++)
{
}
}
}
void array_anzeigen(int *a, int x, int y)
{
int i, j;
for (i = 0; i < y; i++)
{
for (j = 0; j < x; j++)
{
}
}
}
void neues_array(int *a, int x, int y)
{
int i, j;
int *temp
= calloc(sizeof*a
, x
*y
); int *maske
= calloc(sizeof*a
, x
*y
); memcpy(temp
, a
, x
*y
*sizeof*a
);
for (i = 0; i < y; i++)
{
for (j = 0; j < x; j++)
{
if (T(i-1,j-1) == 1 && i > 0 && j > 0) ++M(i,j);
if (T(i-0,j-1) == 1 && j > 0) ++M(i,j);
if (T(i-1,j-0) == 1 && i > 0) ++M(i,j);
if (T(i-1,j+1) == 1 && i > 0 && j + 1 < x) ++M(i,j);
if (T(i-0,j+1) == 1 && j + 1 < x) ++M(i,j);
if (T(i+1,j-0) == 1 && i + 1 < y) ++M(i,j);
if (T(i+1,j-1) == 1 && i + 1 < y && j > 0) ++M(i,j);
if (T(i+1,j+1) == 1 && i + 1 < y && j + 1 < x) ++M(i,j);
if (M(i,j) > 3 || M(i,j) < 2)
A(i,j) = 0;
else if (M(i,j) == 3)
A(i,j) = 1;
}
}
}
int main()
{
int runde;
int x = 20;
int y = 20;
int *a
= calloc(sizeof*a
, x
*y
); random_array(a,x,y);
for (runde
= 1; runde
< 5; ++runde
, getchar()) {
neues_array(a, x, y);
array_anzeigen(a, x, y);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8dGltZS5oPgoKI2RlZmluZSBBKGksaikgYVt5KmoraV0KI2RlZmluZSBUKGksaikgdGVtcFt5KmoraV0KI2RlZmluZSBNKGksaikgbWFza2VbeSpqK2ldCnZvaWQgcmFuZG9tX2FycmF5KGludCAqYSwgaW50IHgsIGludCB5KSAgICAgICAgICAgICAgICAgIAp7CglpbnQgaSwgajsKCWZvciAoaSA9IDA7IGkgPCB5OyBpKyspCgl7CgkJZm9yIChqID0gMDsgaiA8IHg7IGorKykKCQl7CgkJCUEoaSxqKSA9IHJhbmQoKSAmIDE7ICAgICAgICAgICAgICAKCQl9Cgl9Cn0KCnZvaWQgYXJyYXlfYW56ZWlnZW4oaW50ICphLCBpbnQgeCwgaW50IHkpICAgICAgIAp7CglpbnQgaSwgajsKCWZvciAoaSA9IDA7IGkgPCB5OyBpKyspCgl7CgkJZm9yIChqID0gMDsgaiA8IHg7IGorKykKCQl7CgkJCXByaW50ZigiJTJkIiwgQShpLGopKTsKCQl9CgkJcHJpbnRmKCJcbiIpOwoJfQoJcHJpbnRmKCJcbiIpOwp9Cgp2b2lkIG5ldWVzX2FycmF5KGludCAqYSwgaW50IHgsIGludCB5KQp7CglpbnQgaSwgajsKCWludCAqdGVtcCA9IGNhbGxvYyhzaXplb2YqYSwgeCp5KTsKCWludCAqbWFza2UgPSBjYWxsb2Moc2l6ZW9mKmEsIHgqeSk7CgltZW1jcHkodGVtcCwgYSwgeCp5KnNpemVvZiphKTsKCglmb3IgKGkgPSAwOyBpIDwgeTsgaSsrKQoJewoJCWZvciAoaiA9IDA7IGogPCB4OyBqKyspCgkJewoJCQlpZiAoVChpLTEsai0xKSA9PSAxICYmIGkgICAgID4gMCAmJiBqICAgICA+IDApICsrTShpLGopOwoJCQlpZiAoVChpLTAsai0xKSA9PSAxICYmIGogICAgID4gMCkgICAgICAgICAgICAgICsrTShpLGopOwoJCQlpZiAoVChpLTEsai0wKSA9PSAxICYmIGkgICAgID4gMCkgICAgICAgICAgICAgICsrTShpLGopOwoJCQlpZiAoVChpLTEsaisxKSA9PSAxICYmIGkgICAgID4gMCAmJiBqICsgMSA8IHgpICsrTShpLGopOwoJCQlpZiAoVChpLTAsaisxKSA9PSAxICYmIGogKyAxIDwgeCkgICAgICAgICAgICAgICsrTShpLGopOwoJCQlpZiAoVChpKzEsai0wKSA9PSAxICYmIGkgKyAxIDwgeSkgICAgICAgICAgICAgICsrTShpLGopOwoJCQlpZiAoVChpKzEsai0xKSA9PSAxICYmIGkgKyAxIDwgeSAmJiBqICAgICA+IDApICsrTShpLGopOwoJCQlpZiAoVChpKzEsaisxKSA9PSAxICYmIGkgKyAxIDwgeSAmJiBqICsgMSA8IHgpICsrTShpLGopOwoKCQkJaWYgKE0oaSxqKSA+IDMgfHwgTShpLGopIDwgMikKCQkJCUEoaSxqKSA9IDA7CgkJCWVsc2UgaWYgKE0oaSxqKSA9PSAzKQoJCQkJQShpLGopID0gMTsKCQl9Cgl9CglmcmVlKG1hc2tlKSwgZnJlZSh0ZW1wKTsKfQoKaW50IG1haW4oKQp7CglpbnQgcnVuZGU7CglpbnQgeCA9IDIwOwoJaW50IHkgPSAyMDsKCWludCAqYSA9IGNhbGxvYyhzaXplb2YqYSwgeCp5KTsKCXNyYW5kKHRpbWUoMCkpOwoJcmFuZG9tX2FycmF5KGEseCx5KTsKCglmb3IgKHJ1bmRlID0gMTsgcnVuZGUgPCA1OyArK3J1bmRlLCBnZXRjaGFyKCkpCgl7CgkJbmV1ZXNfYXJyYXkoYSwgeCwgeSk7CgkJcHJpbnRmKCIgUnVuZGUgJWlcbiIsIHJ1bmRlKTsKCQlhcnJheV9hbnplaWdlbihhLCB4LCB5KTsKCX0KCglmcmVlKGEpOwoJcmV0dXJuIDA7Cn0KCg==