2011年9月6日 星期二

457 - Linear Cellular Automata


有一位生物學家正在進行一項生物實驗,他將經過DNA修改的細菌培養在一群線性的培養皿陣列上,藉由修改細菌的DNA資訊,他可控制細菌對鄰近培養皿上細菌的密度作出反應。密度值分為四個級距:0, 1, 2, 3。DNA遺傳因子可用10個整數表示,每個整數的編號分別為0~9,整數代表的是密度值,寫成DNA(x),說明如下:
  • 對於任何一個培養皿,令K為該培養皿的密度與其鄰近兩個培養皿密度的和,隔天該培養皿上的細菌密度變為DNA(K)。 
  • 培養皿陣列最右邊的培養皿,其右邊的培養皿密度定義為0。 
  • 培養皿陣列最左邊的培養皿,其左邊的培養皿密度定義為0。 

藉由改變DNA資訊,生物學家可使所有細菌最終都死掉(例如: DNA[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),或是使細菌大量生長(例如: DNA[3, 3, 3, 3, 3, 3, 3, 3, 3, 3])。

請你寫一個程式來模擬40個培養皿上細菌的生長情況,假設第20個培養皿的細菌初始密度為1,其他培養皿皆為0。

Input
輸入的第一列有一個整數表示測試資料的組數,接下來會有一列空行,每組測試資料之間亦有一列空行。

每組測試資料一列,有10個整數。

Output
請依照下列的說明輸出每組測試資料的結果,每組結果之間以一列空行隔開。

請對每組資料輸出40個培養皿的細菌密度,連續輸出50天,每一天的資料請輸出一列40個字元,每個培養皿以一個字元表示,密度為0請輸出空白字元,密度為1請輸出'.',密度為2請輸出'x',密度為3請輸出'W'。

Sample Input
1
0 1 2 0 1 3 3 2 3 0

Sample Output
bbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbb.xbx.bbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbb.bb.bb.bbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbb.........bbbbbbbbbbbbbbbb
bbbbbbbbbbbbbb.xbbbbbbbx.bbbbbbbbbbbbbbb
bbbbbbbbbbbbb.bbxbbbbbxbb.bbbbbbbbbbbbbb
bbbbbbbbbbbb...xxxbbbxxx...bbbbbbbbbbbbb
bbbbbbbbbbb.xb.WW.xbx.WW.bx.bbbbbbbbbbbb
bbbbbbbbbb.bbb.xxWb.bWxx.bbb.bbbbbbbbbbb

注意:本例輸出僅印出前10列,你應該要印出完整的50列。為了方便閱讀,本列中的空白字元已經被 b 所取代,你應該印的是空白字元而非 b。


原文出處

沒有留言:

張貼留言