項(xiàng)目分享:C語言并行實(shí)現(xiàn)丨元胞自動(dòng)機(jī)生命游戲
簡介
細(xì)胞自動(dòng)機(jī)(又稱元胞自動(dòng)機(jī)),名字雖然很深?yuàn)W,但是它的行為卻是非常美妙的。所有這些怎樣實(shí)現(xiàn)的呢?我們可以把計(jì)算機(jī)中的宇宙想象成是一堆方格子構(gòu)成的封閉空間,尺寸為N的空間就有NN個(gè)格子。而每一個(gè)格子都可以看成是一個(gè)生命體,每個(gè)生命都有生和死兩種狀態(tài),如果該格子生就顯示藍(lán)色,死則顯示白色。每一個(gè)格子旁邊都有鄰居格子存在,如果我們把33的9個(gè)格子構(gòu)成的正方形看成一個(gè)基本單位的話,那么這個(gè)正方形中心的格子的鄰居就是它旁邊的8個(gè)格子。

每個(gè)格子的生死遵循下面的原則:
1. 如果一個(gè)細(xì)胞周圍有3個(gè)細(xì)胞為生(一個(gè)細(xì)胞周圍共有8個(gè)細(xì)胞),則該細(xì)胞為生(即該細(xì)胞若原先為死,則轉(zhuǎn)為生,若原先為生,則保持不變) 。
2. 如果一個(gè)細(xì)胞周圍有2個(gè)細(xì)胞為生,則該細(xì)胞的生死狀態(tài)保持不變;
3. 在其它情況下,該細(xì)胞為死(即該細(xì)胞若原先為生,則轉(zhuǎn)為死,若原先為死,則保持不變)
實(shí)現(xiàn)思路
將全局矩陣分解為大小相等的(工作)塊,這樣我們就可以實(shí)現(xiàn)生命的游戲。
初始化:從文件中讀取數(shù)據(jù):一個(gè)包含游戲初始狀態(tài)的m×n矩陣。

為了與其他處理器通信,我設(shè)置了一個(gè)局部矩陣和一個(gè)全局矩陣。局部矩陣是一種混合狀態(tài)。對于處理器0,它可以從局部矩陣中獲得全局矩陣。
MPI并行實(shí)現(xiàn)
輸出示例

來源:OmegaXYZ丨xyjisaw
原文鏈接:https://www.omegaxyz.com/2022/01/26/c_game_of_life/?utm_source=tuicool&utm_medium=referral
寫在最后:對于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
編程學(xué)習(xí)書籍分享:

