在5x5的接受者体内有一种病毒。因为我们知道它如何传播它的污染,你的任务是输出污染的最后阶段。
它将表示为一个由5x5组成的二维数组:
0 0 0 0 1
0 0 0 0 1
0 0 0 1 1
0 0 1 1 1
0 1 1 1 11是指病毒已经被污染的位置,而0是指未受污染的位置。
作为上述污染的第一阶段,第二阶段将是:
0 0 0 0 1
0 0 0 1 1
0 0 1 1 1
0 1 1 1 1
0 1 1 1 1污染的第三阶段将是:
0 0 0 1 1
0 0 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1污染的第四阶段将是:
0 0 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1第五阶段(在本例中,最后一个阶段)是:
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1给定污染的一个阶段作为输入,您应该输出污染的最后一个阶段。
您可以编写完整的程序或函数。您可以将输入作为数组/列表、分隔的数字,甚至是字符串。选择最适合你的语言的方式。
最短的答案(以字节为单位)获胜!
Input:
1 1 0 0 1
0 0 0 0 0
0 1 0 0 1
0 0 0 0 0
1 0 0 0 1
Output:
1 1 0 0 1
1 1 0 0 1
1 1 0 0 1
1 1 0 0 1
1 1 0 0 1Input:
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Output:
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1Input:
1 0 0 1 0
0 0 1 0 1
0 0 0 0 0
1 0 0 0 0
0 0 1 0 0
Output:
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1Input:
0 1 0 0 0
0 0 0 0 1
0 0 1 0 0
1 0 0 0 0
0 0 0 1 0
Output:
0 1 0 0 0
0 0 0 0 1
0 0 1 0 0
1 0 0 0 0
0 0 0 1 0发布于 2016-03-20 02:45:00
因为这基本上是指我给你的细胞自动机。
01234/234V输入规则,将网格粘贴到Golly中,运行模式。结果模式是输出。
解释:
01234 Survive on any number of neighbors
/234 Born on >2 neighbors
V Only directly adjacent neighbors count或者,如果您坚持完整的RuleLoader规则,89个字节:
@RULE X
@TABLE
n_states:2
neighborhood:vonNeumann
symmetries:permute
011001
011101
011111Rulename是X,与前面的步骤相同。
发布于 2016-03-20 03:01:49
s=' '*6+input()
exec"s=s[1:]+('1'+s)[sum(s[i]<'1'for i in[-6,-1,1,6])>2or'/'>s];"*980
print s[6:]在网上试试。输入作为带引号的字符串,每一行由换行符分隔。980不是最优的,可以用35的较低倍数替换。由于它对这个程序的长度没有任何影响,所以我把最低安全上限的确定留给了读者。
发布于 2016-03-20 04:14:00
Prompt [A]
[A]→[B]
Lbl 0
[B]→[A]
For(Y,1,5
For(X,1,5
DelVar ADelVar BDelVar CDelVar D
If Y>1:[A](Y-1,X→A
If Y<5:[A](Y+1,X→B
If X>1:[A](Y,X-1→C
If X<5:[A](Y,X+1→D
max(A+B+C+D≥2,[A](Y,X→[B](Y,X
End
End
If [A]≠[B]:Goto 0
[B]输入为[[1,0,0,1,1][1,0,0,0,0]...]。
https://codegolf.stackexchange.com/questions/75840
复制相似问题