ตั้งแต่วันพรุ่งนี้เป็นวันที่ 4 พฤษภาคมนี่คือโพสต์รูปแบบ Star Wars เล็ก ๆ น้อย ๆ ที่จะเตรียมความพร้อมให้กับคุณในเรื่องตลก ๆ ที่กำลังจะมาถึงในวันพรุ่งนี้
backstory
ในระหว่างเซสชันของกาแล็กซี่วุฒิสภาสมาชิกวุฒิสภาทั้งหมดกำลังนั่งอยู่ในn*n
ตาราง การระบาดอย่างฉับพลันของไข้หวัดใหญ่ JarJar (ซึ่งจะคงอยู่ตลอดไปและทำให้ผู้ติดเชื้อพูดเหมือน JarJar Binks) ทำให้วุฒิสมาชิกบางคนติดเชื้อ
นี่คือตัวอย่างของ6*6
กริดที่X
เป็นสมาชิกวุฒิสภาที่ติดเชื้อรายการที่เกี่ยวข้องคือ[[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[0,5]]
:
หลังจากนั้นการติดเชื้อเริ่มแพร่กระจายทีละขั้นตอน วุฒิสมาชิกสองคนอยู่ติดกันหากพวกเขาแบ่งปันขอบทั้งหมดในตาราง (เช่นด้านบนด้านล่างขวาซ้าย) ซึ่งหมายความว่าเราไม่รวมเส้นทแยงมุม
เราสามารถสรุปวุฒิสมาชิกสามารถติดกับสมาชิกวุฒิสภาอีก 2,3 หรือ 4 คนและเรียกร้องกฎต่อไปนี้สำหรับการติดเชื้อ:
- วุฒิสมาชิกที่ติดเชื้อนั้นจะคงอยู่ตลอดไป
- วุฒิสมาชิกติดเชื้อในขั้นตอนเดียวหากเขาอยู่ติดกับสมาชิกวุฒิสภาที่ติดเชื้อ 2 คนขึ้นไปในขั้นตอนก่อนหน้า
นี่คือตัวอย่างของกริดก่อนหน้าซึ่งแสดงขั้นตอนแรกของการติดเชื้อ 2 ขั้นตอน:
หลังจากขั้นตอนต่อไปวุฒิสภาจะได้รับเชื้อทั้งหมด
งานของคุณ
รหัสของคุณไม่จำเป็นต้องจัดการอินพุตที่ไม่ถูกต้องเช่นรายการที่มากกว่าn*n
หรือพิกัดที่ไม่แตกต่างกัน
รหัสของคุณจะใช้เป็นรายการของคู่ของจำนวนเต็ม (หรือตารางไบนารีหรือรูปแบบอื่น ๆ ที่เหมาะกับภาษาของคุณ) และจำนวนเต็มn
(ซึ่งอาจไม่จำเป็นหากคุณใช้รูปแบบอื่นนอกเหนือจากรายการ):
8 [[1,2],[1,1],[7,4],[2,7],[4,3]]
n เป็นด้านของกริดซึ่งหมายถึงกริดจะเป็นกริด * n และรายชื่อคู่จำนวนเต็มเป็นพิกัดของเซลล์ของวุฒิสมาชิกที่ติดเชื้อเริ่มแรก
ด้านล่างซ้ายของตารางคือ [0,0] และด้านบนขวาคือ [n-1, n-1] ด้านซ้ายบนคือ [0, n-1]
รหัสของคุณจะต้องแสดงผลเป็นจำนวนเต็ม:
-1
หรือค่าที่ผิดพลาดหรือข้อผิดพลาดหากกริดทั้งหมดจะไม่ติดเชื้อโดยสิ้นเชิงหรือจำนวนขั้นต่ำที่จำเป็นในการติดเชื้อกริดทั้งหมด
กรณีทดสอบ
6 [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[5,0]] => 7
4 [[1,1][0,3][1,0][3,0][3,3]] => 9
จำไว้ว่านี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!
n
คืออะไร มีค่าสูงสุดหรือไม่?
CellularAutomaton
...