โจทย์
ดูต้นฉบับ (ภาษาอังกฤษ)แต่ละเซลล์จะมีสถานะเป็นมีชีวิต (1) หรือ ตาย (0) และมีเพื่อนบ้านได้สูงสุด 8 เซลล์ ในเจเนอเรชันถัดไป เซลล์ที่มีชีวิตจะรอดหากมีเพื่อนบ้านที่มีชีวิต 2 หรือ 3 เซลล์ ส่วนเซลล์ที่ตายจะกลับมามีชีวิตหากมีเพื่อนบ้านที่มีชีวิตอยู่ 3 เซลล์พอดี เซลล์ที่อยู่นอกกริดถือว่าตาย ทุกเซลล์จะอัปเดตพร้อมกันทั้งหมด
ให้เขียนฟังก์ชัน next_generation(grid)
อินพุต
grid: กริดสี่เหลี่ยมที่ประกอบด้วย 0 และ 1
เอาต์พุต
คืนค่าเจเนอเรชันถัดไป
เงื่อนไข
0 ≤ แถว, คอลัมน์ ≤ 200
ตัวอย่าง
อินพุต:
grid = [
[0, 1, 0],
[0, 1, 0],
[0, 1, 0]
]
ผลลัพธ์ที่คาดหวัง:
expected = [
[0, 0, 0],
[1, 1, 1],
[0, 0, 0]
]
อินพุต:
std::vector<std::vector<long long>> grid = {
{0, 1, 0},
{0, 1, 0},
{0, 1, 0}
};
ผลลัพธ์ที่คาดหวัง:
std::vector<std::vector<long long>> expected = {
{0, 0, 0},
{1, 1, 1},
{0, 0, 0}
};
อินพุต:
long[][] grid = new long[][] {
new long[] {0, 1, 0},
new long[] {0, 1, 0},
new long[] {0, 1, 0}
};
ผลลัพธ์ที่คาดหวัง:
long[][] expected = new long[][] {
new long[] {0, 0, 0},
new long[] {1, 1, 1},
new long[] {0, 0, 0}
};
คำอธิบาย
"blinker" แนวตั้งจะกลายเป็นแนวนอน: เซลล์ตรงกลางรอดชีวิต และเซลล์ซ้ายขวาของมันจะเกิดใหม่ ทำให้แถวกลางเต็ม
อินพุต:
grid = [
[1, 1],
[1, 1]
]
ผลลัพธ์ที่คาดหวัง:
expected = [
[1, 1],
[1, 1]
]
อินพุต:
std::vector<std::vector<long long>> grid = {
{1, 1},
{1, 1}
};
ผลลัพธ์ที่คาดหวัง:
std::vector<std::vector<long long>> expected = {
{1, 1},
{1, 1}
};
อินพุต:
long[][] grid = new long[][] {
new long[] {1, 1},
new long[] {1, 1}
};
ผลลัพธ์ที่คาดหวัง:
long[][] expected = new long[][] {
new long[] {1, 1},
new long[] {1, 1}
};
คำอธิบาย
แต่ละเซลล์ของบล็อกขนาด 2×2 มีเพื่อนบ้าน 3 เซลล์พอดี บล็อกจึงคงเดิม
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน