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 1
凡1
指其中病毒已经被污染的位置,并且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
污染的第3阶段将是:
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
污染的阶段4将是:
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 1
Input:
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 1
Input:
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 1
Input:
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
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
为测试用例吗?
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
,它保持不变。
1 0 1
在输出中发生?中心零不是和21
s 相邻吗?