มีไวรัสอยู่ภายในผู้รับ 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
ตำแหน่งไม่ปนเปื้อน
ไวรัสแพร่กระจายอย่างไร
- ตำแหน่งที่ปนเปื้อนไม่สามารถทำความสะอาดได้
- ตำแหน่งที่สะอาดจะถูกปนเปื้อนในขั้นตอนต่อไปเฉพาะในกรณีที่ตำแหน่งที่อยู่ติดกันอย่างน้อยสองแห่ง (เซลล์เหนือ, ตะวันออก, ใต้และตะวันตก) มีการปนเปื้อน
- ขั้นตอนสุดท้ายของการปนเปื้อนเกิดขึ้นเมื่อไม่มีเซลล์ที่สะอาดอีกต่อไปที่จะปนเปื้อน
ตัวอย่าง
เมื่อใช้ตามขั้นตอนที่ 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
ท้าทาย
ให้เป็นอินพุตหนึ่งขั้นตอนของการปนเปื้อนคุณควรส่งออกขั้นตอนสุดท้ายของการปนเปื้อน
คุณได้รับอนุญาตให้เขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น คุณสามารถรับอินพุตเป็นอาร์เรย์ / รายการแยกตัวเลขหรือแม้กระทั่งเป็นสตริงได้ เลือกวิธีที่ดีที่สุดที่เหมาะกับภาษาของคุณ
คำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ!
อีกกรณีทดสอบ
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
เกิดขึ้นในผลลัพธ์ได้อย่างไร ไม่ใช่ศูนย์ศูนย์ที่อยู่ติดกับสอง1
s?