#include <iostream>
using namespace std;
char **create_2darray(int rows, int cols){
char **a;
a = new char *[rows];
for(int i = 0;i<rows;i++){
a[i]=new char[cols];
}
return a;
}
char **set_2darry(int rows, int cols, char** array){
char ** a = array;
for(int i = 0; i < rows; i++){
for(int x = 0; x < cols; x++){
a[i][x]= ' ';
}
}
return a;
}
char **locate_array(char ** a, int rows, int cols){
a[rows][cols] = '*';
return a;
}
char **determine(char ** a, int rows, int cols){
int counter;
int n[1000];
for(int i = 0; i< rows;i++){
for(int x = 0; x< cols; x++){
if(i == 0 && x == 0){
if(a[i][x] == '*'){
if(a[i+1][x] == '*'){
n[counter]++;
}
if(a[i][x+1] == '*'){
n[counter]++;
}
if(a[i+1][x+1] == '*'){
n[counter]++;
}
}
}
else if(i == 0 && x == cols-1){
if(a[i][x] == '*'){
if(a[i][x-1] == '*'){
n[counter]++;
}
if(a[i+1][x-1] == '*'){
n[counter]++;
}
if(a[i+1][x] == '*'){
n[counter]++;
}
}
}
else if(i == rows-1 && x == 0){
if(a[i][x] == '*'){
if(a[i-1][x] == '*'){
n[counter]++;
}
if(a[i-1][x+1] == '*'){
n[counter]++;
}
if(a[i][x+1] == '*'){
n[counter]++;
}
}
}
else if(i == rows-1 && x == cols-1){
if(a[i][x] == '*'){
if(a[i-1][x-1] == '*'){
n[counter]++;
}
if(a[i][x-1] == '*'){
n[counter]++;
}
if(a[i-1][x] == '*'){
n[counter]++;
}
}
}
else if(i == rows-1){
if(a[i][x] == '*'){
if(a[i-1][x-1] == '*'){
n[counter]++;
}
if(a[i][x-1] == '*'){
n[counter]++;
}
if(a[i-1][x] == '*'){
n[counter]++;
}
if(a[i-1][x+1] == '*'){
n[counter]++;
}
if(a[i][x+1] == '*'){
n[counter]++;
}
}
}
else if(i == 0){
if(a[i][x] == '*'){
if(a[i][x-1] == '*'){
n[counter]++;
}
if(a[i+1][x-1] == '*'){
n[counter]++;
}
if(a[i+1][x] == '*'){
n[counter]++;
}
if(a[i][x+1] == '*'){
n[counter]++;
}
if(a[i+1][x+1] == '*'){
n[counter]++;
}
}
}
else if(x == 0){
if(a[i][x] == '*'){
if(a[i-1][x] == '*'){
n[counter]++;
}
if(a[i+1][x] == '*'){
n[counter]++;
}
if(a[i-1][x+1] == '*'){
n[counter]++;
}
if(a[i][x+1] == '*'){
n[counter]++;
}
if(a[i+1][x+1] == '*'){
n[counter]++;
}
}
}
else if(x == cols-1){
if(a[i][x] == '*'){
if(a[i-1][x-1] == '*'){
n[counter]++;
}
if(a[i][x-1] == '*'){
n[counter]++;
}
if(a[i+1][x-1] == '*'){
n[counter]++;
}
if(a[i-1][x] == '*'){
n[counter]++;
}
if(a[i+1][x] == '*'){
n[counter]++;
}
}
}
else {
if(a[i][x] == '*'){
if(a[i-1][x-1] == '*'){
n[counter]++;
}
if(a[i][x-1] == '*'){
n[counter]++;
}
if(a[i+1][x-1] == '*'){
n[counter]++;
}
if(a[i-1][x] == '*'){
n[counter]++;
}
if(a[i+1][x] == '*'){
n[counter]++;
}
if(a[i-1][x+1] == '*'){
n[counter]++;
}
if(a[i][x+1] == '*'){
n[counter]++;
}
if(a[i+1][x+1] == '*'){
n[counter]++;
}
}
}
counter++;
}
}
counter = 0;
for(int i = 0; i< rows;i++){
for(int x = 0; x< cols; x++){
if(n[counter] > 3){
a[i][x] = ' ';
}
else if(n[counter] == 0 || n[counter] == 1){
a[i][x] = ' ';
}
else if(n[counter] == 3){
a[i][x] = '*';
}
counter++;
}
}
return a;
}
struct GOL{
char** table;
int gen;
int rows;
int cols;
};
void print_2darray(char** a, int rows, int cols){
for(int i = 0; i < rows; i++){
for(int x = 0; x < cols; x++){
cout << a[i][x];
}
cout << endl;
}
}
在康威生命遊戲的三個主要規則(三種主要的生活和死亡的規則):無法確定「遊戲人生」康威的正確
- 如果一個被佔領的細胞擁有0或1鄰居,它孤獨的死亡。
- 如果一個被佔用的單元有三個以上的鄰居,它會死於過度擁擠。
- 如果一個空單元正好有三個被佔用的相鄰單元,則會出現一個新單元來替換空單元。
順便說一下,鄰居是直接在上面,下面,右邊,左邊,右上和左邊對角線上方,右下方對角線下方的單元格。
我無法正確打印「生命遊戲」,我知道我的判斷函數有一些問題;但我不知道那裏的錯誤是..
如果其中一個給定的答案是問題的接受答案,那麼您應該通過單擊答案旁邊的空白複選標記來接受它,以便它變爲綠色。如果你找到了不同的解決方案,那麼你應該在這裏描述並接受它。 – Dialecticus