5x5の受信者の内部にウイルスがいます。汚染がどのように伝播するかを知っているので、あなたの使命は汚染の最終段階を出力することです。
受取人
これは、5x5の2次元配列として表されます。
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
いる場所と、汚染されていない場所を意味します。
ウイルスの伝播方法
- 汚染された位置はきれいにできません。
- クリーンな位置は、隣接する位置(北、東、南、西のセル)の少なくとも2つが汚染されている場合にのみ、次の段階で汚染されます。
- 汚染の最終段階は、クリーンなセルを汚染できなくなったときに発生します。
サンプル
汚染の段階1として上記の受信者を使用すると、段階2は次のようになります。
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
そして、ステージ5(この例では、最後のステージ)は次のようになります。
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
チャレンジ
汚染の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
出力でどのように発生する可能性がありますか?中心のゼロは2つ1
のsに隣接していませんか?