链接: https://pan.baidu.com/s/14y0xTlugL3R9ubj-h7zMvg
提取码: qjvg
链接: https://pan.baidu.com/s/14y0xTlugL3R9ubj-h7zMvg
提取码: qjvg
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
auto.start();
Console.ReadKey();
}
}
class auto
{
public static void start()
{
char i1;
int gens,count;
count = 0;
int[] start;
int[] rules = new int[8];
i1=(char)int.Parse(Console.ReadLine());
gens = int.Parse(Console.ReadLine());
string str = Console.ReadLine();
start = new int[str.Length];
for (int i = 0; i < str.Length; i++)
{
if (str[i]=='-')
{
start[i]=0;
}
else
{
start[i]=1;
}
}
for (int i = 0; i < 8; i++)
{
if ((i1&0x80)==0x80)
{
rules[i] = 1;
}
else
{
rules[i] = 0;
}
i1 <<= 1;
}
int[] gen = new int[start.Length];
for (int i = 0; i < gens; i++)
{
count++;
for (int j = 0; j < start.Length; j++)
{
int tmp = 0;
if (j==0)
{
tmp = start[start.Length - 1];
}
else
{
tmp = start[j - 1];
}
tmp <<= 1;
tmp |= start[j];
tmp <<= 1;
if (j==(start.Length-1))
{
tmp |= start[0];
}
else
{
tmp |= start[j + 1];
}
switch (tmp)
{
case 7:
gen[j] = rules[0];
break;
case 6:
gen[j] = rules[1];
break;
case 5:
gen[j] = rules[2];
break;
case 4:
gen[j] = rules[3];
break;
case 3:
gen[j] = rules[4];
break;
case 2:
gen[j] = rules[5];
break;
case 1:
gen[j] = rules[6];
break;
case 0:
gen[j] = rules[7];
break;
}
}
for (int k = 0; k < start.Length; k++)
{
start[k] = gen[k];
}
if ((count<=20)||(count>gens-20))
{
for (int k = 0; k < start.Length; k++)
{
if (start[k]==1)
{
Console.Write("x");
}
else
{
Console.Write("-");
}
}
Console.Write('\n');
}
else if (gens>40 && count==21)
{
Console.WriteLine("...");
}
}
}
}
}
如果不需要main函数,则复制下面的
using System;
class Program
{
public static void start()
{
char i1;
int gens, count;
count = 0;
int[] start;
int[] rules = new int[8];
i1 = (char)int.Parse(Console.ReadLine());
gens = int.Parse(Console.ReadLine());
string str = Console.ReadLine();
start = new int[str.Length];
for (int i = 0; i < str.Length; i++)
{
if (str[i] == '-')
{
start[i] = 0;
}
else
{
start[i] = 1;
}
}
for (int i = 0; i < 8; i++)
{
if ((i1 & 0x80) == 0x80)
{
rules[i] = 1;
}
else
{
rules[i] = 0;
}
i1 <<= 1;
}
int[] gen = new int[start.Length];
for (int i = 0; i < gens; i++)
{
count++;
for (int j = 0; j < start.Length; j++)
{
int tmp = 0;
if (j == 0)
{
tmp = start[start.Length - 1];
}
else
{
tmp = start[j - 1];
}
tmp <<= 1;
tmp |= start[j];
tmp <<= 1;
if (j == (start.Length - 1))
{
tmp |= start[0];
}
else
{
tmp |= start[j + 1];
}
switch (tmp)
{
case 7:
gen[j] = rules[0];
break;
case 6:
gen[j] = rules[1];
break;
case 5:
gen[j] = rules[2];
break;
case 4:
gen[j] = rules[3];
break;
case 3:
gen[j] = rules[4];
break;
case 2:
gen[j] = rules[5];
break;
case 1:
gen[j] = rules[6];
break;
case 0:
gen[j] = rules[7];
break;
}
}
for (int k = 0; k < start.Length; k++)
{
start[k] = gen[k];
}
if ((count <= 20) || (count > gens - 20))
{
for (int k = 0; k < start.Length; k++)
{
if (start[k] == 1)
{
Console.Write("x");
}
else
{
Console.Write("-");
}
}
Console.Write('\n');
}
else if (gens > 40 && count == 21)
{
Console.WriteLine("...");
}
}
}
}