回分類題庫
d004: 99年台中區第四題
關鍵字: 99年台中區複賽

測資點 : 2 | Time Limit : 1000 ms | Memory Limit : 32000 KB
Accepted : 212 Times / 202 Users | Submit : 392 Times / 213 Users | Accepted rate : 95%
題目加入時間 : 2011-09-06 23:11

Content: 简体中文

請設計一程式,符合下列需求來進行細胞生命遊戲的演化。

細胞生命遊戲是一群細胞於二維平面中的成長與演化,本題中把平面分割成5×5的棋盤方格,每一格子代表一個細胞,每一個細胞最多有八個鄰近細胞(上、下、左、右、左上、左下、右上、右下),這些細胞有兩種狀態:「生」或「死」,存活的細胞表示為1,而死亡的細胞則表示為0。圖一表示某個細胞生命分布的狀況,25個細胞中有9個存活以及16個死亡。以第一列第一行的死亡細胞(0)為例,此細胞只有三個鄰近細胞(下、右、右下),其中有兩個為活細胞。以第二列第二行的存活細胞(1)為例,此細胞有八個鄰近細胞,其中有三個為活細胞。

生命遊戲的演化規則如下:
1.對於存活的細胞而言,(1)當所有鄰近細胞中,只有零個或一個是活細胞時,則該細胞下一代會因孤獨而死亡;(2)當所有鄰近細胞中,恰有二或三個是活細胞時,則該細胞下一代會繼續存活;(3)當所有鄰近細胞中,有四個或超過四個是活細胞時,則該細胞下一代會因擁擠而死亡。
2.對於死亡的細胞而言,只有當其所有鄰近細胞中剛好有三個是活細胞時,這個死亡細胞下一代才會復活成為活細胞,否則仍然為死細胞。

以圖一的第一代的細胞生命分布為例,其第二代的細胞生命分布會演化成圖二的狀況。圖中第二列第一行的細胞原本為死細胞(0),但由於其五個鄰近細胞中,剛好有三個活細胞(右、右上、右下為1),因此在第二代中復活成為活細胞(1)。圖中第二列第三行的細胞原本為活細胞(1),但由於八個鄰近細胞中有四個活細胞,因此在第二代中因擁擠而死亡,成為死細胞(0)。

注意,第i代(i=2, 3, 4, 5)的細胞存活狀況只受到前一代(第i-1代)影響,同一代中先計算出的細胞存活狀況並不會影響後產生的細胞存活狀態。

本題讀入5×5的第一代細胞生命分布後,請進行演化以顯示第二代到第五代的細胞生命分布狀況和總存活細胞個數。

Input:

輸入資料共有五列,每列有五個數字代表細胞的生(1)或死(0),每個數字以逗號(,)隔開,表示5×5的第一代細胞生命分布狀況。

Output:

請依照輸出範例格式,依序輸出第二代至第五代的總存活細胞個數及細胞生命分布狀況,共有四個5*5的數字矩陣,1代表細胞存活,0代表細胞死亡,每個數字以逗號(,)隔開。

Sample Input:help

若題目沒有特別說明,則應該以多測資的方式讀取,若不知如何讀取請參考 a001 的範例程式。
0,1,0,0,1
0,1,1,1,1
0,1,0,0,1
0,0,0,1,0
0,0,0,0,0

Sample Output :

第2代: 7個細胞存活
0,1,0,0,1
1,1,0,0,1
0,1,0,0,1
0,0,0,0,0
0,0,0,0,0
第3代: 9個細胞存活
1,1,0,0,0
1,1,1,1,1
1,1,0,0,0
0,0,0,0,0
0,0,0,0,0
第4代: 5個細胞存活
1,0,0,1,0
0,0,0,1,0
1,0,0,1,0
0,0,0,0,0
0,0,0,0,0
第5代: 3個細胞存活
0,0,0,0,0
0,0,1,1,1
0,0,0,0,0
0,0,0,0,0
0,0,0,0,0

Hint :

Author :

99年台中區複賽 (管理員:sagit)

  Solve it!   Status Forum