iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 6
0
AI & Data

Python零基礎到Kaggle 系列 第 6

Python零基礎到kaggle-Day5

  • 分享至 

  • twitterImage
  •  

今日目標

用Python寫Conwey‘s game of life

看完文章您將學到什麼

使用Python語法撰寫一支程式

內文

首先認識一下什麼是Conwey‘s game of life,從wiki
我們可以知道這是一個用程式模擬生命的遊戲,當初始細胞圖規劃完成,細胞們會照規則在二維矩陣不停變換
在Unix世界中的許多駭客喜歡玩,而在leetcode 也有相關題目
我想用它做為我們Python練習小目標非常適合

接下來來看看程式相關部分吧
初始時有張細胞圖,細胞分生存與死亡兩種狀態,且有四個規則:

1.當前細胞為存活狀態時,當周圍的存活細胞低於2個時(不包含2個),該細胞變成死亡狀態。(模擬生命數量稀少)
2.當前細胞為存活狀態時,當周圍有2個或3個存活細胞時,該細胞保持原樣
3.當前細胞為存活狀態時,當周圍有超過3個存活細胞時,該細胞變成死亡狀態(模擬生命數量過多)
4.當前細胞為死亡狀態時,當周圍有3個存活細胞時,該細胞變成存活狀態(模擬繁殖)

程式撰寫

程式有兩個方案
1.想自行練習的人請參考wiki說明並打開spyder撰寫
2.或從參考資料下載解壓縮後,Spyder>File>Open引入三支程式

ex5:

檢查當前目錄地圖檔是否存在,並存成array
否:generateAFile,並拋出FileNotFoundError
是:說明地圖已經生成了
接下來讀地圖檔,並checkConfigure
否:印出欄位
是:拋出ValueError
在檢查欄位時確定該有欄位都存在,並用strToArray將地圖檔存成矩陣

generateAFile: 生成地圖檔,並存為example.txt
checkConfigure:檢查地圖檔是否錯誤
strToArray: 將讀入地圖檔轉成array

ex6:

將array按照上述規則變換一次

ex7:

按照地圖檔設定次數將array變換多次

執行過程請按照ex5>ex5>ex6>ex7執行過一次
除錯時可以把下方兩個#去掉看各ex執行結果

反思回顧

https://ithelp.ithome.com.tw/upload/images/20190907/20114906ZjrV0v7zXs.png
將檔案全數引入
https://ithelp.ithome.com.tw/upload/images/20190907/20114906DiYTctEqpL.png
ex5顯示當前地圖
https://ithelp.ithome.com.tw/upload/images/20190907/20114906RAjUcP5mpK.png
ex6顯示下一步地圖
https://ithelp.ithome.com.tw/upload/images/20190907/20114906h2UVBYvFn8.png
ex7顯示地圖檔設定步數後地圖結果
https://ithelp.ithome.com.tw/upload/images/20190907/201149063RFfvpih4P.png
後來想到地圖檔轉array有更精簡做法,大家可以試試看

參考資料

https://github.com/eric999j/Conway-s-Game-of-Life
其他Python學習資料
https://github.com/eric999j/Clutter/blob/master/1.工程-Python總匯.md


上一篇
Python零基礎到kaggle-Day4
下一篇
Python零基礎到kaggle-Day6
系列文
Python零基礎到Kaggle 31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言