1970 সালের দিকে একজন ব্রিটিশ গণিতবিদ তার "গেম অফ লাইফ" তৈরি করেছিলেন - যা মূলত জৈবিক জীবের উপনিবেশের বিশৃঙ্খল অথচ প্যাটার্নযুক্ত বৃদ্ধিকে চিত্রিত করে নিয়মের একটি সেট। "গেম অফ লাইফ" হল একটি দ্বি-মাত্রিক গ্রিড যা "জীবিত" এবং "মৃত" কোষ নিয়ে গঠিত।
জীবনের খেলার নিয়ম
-
অতিরিক্ত জনসংখ্যা :একটি কোষ মারা যায় (বন্ধ) যদি তার চারপাশে তিনটি জীবিত কোষ থাকে।
-
স্ট্যাটিক :একটি কোষ বেঁচে থাকে(চালু) যদি তার চারপাশে দুই বা তিনটি জীবন্ত কোষ থাকে।
-
জনসংখ্যা কম :একটি কোষ মারা যায় (বন্ধ) যদি তার চারপাশে দুটি জীবিত কোষ থাকে।
-
পুনরুৎপাদন :একটি কোষ জীবিত(চালু) হয়ে যায় যদি একটি মৃত কোষ ঠিক তিনটি কোষ দ্বারা বেষ্টিত থাকে।
সেলটি পরবর্তী টাইমস্ট্যাম্পে মারা যাবে
সেল পরবর্তী টাইমস্ট্যাম্পে লাইভ করতে চলেছে
সেল জীবিত আছে
সেল মারা গেছে
অনুক্রমিক ধাপে উপরের নিয়মগুলির সেট প্রয়োগ করে আমরা সুন্দর এবং অপ্রত্যাশিত প্যাটার্ন পাব।
বাস্তবায়নের ধাপ:
<পূর্ব> আমি। একটি খালি মহাবিশ্ব শুরু করুন। বীজ দিয়ে মহাবিশ্ব পূর্ণ করুন। বর্তমান সেলটি তার প্রতিবেশীর উপর ভিত্তি করে পরবর্তী টাইমস্ট্যাম্পে টিকে আছে কিনা তা গণনা করুন। এই সারভাইভাল ফাংশনটি পুনরাবৃত্তি করুন (যেমন ধাপ-iii) মহাবিশ্বের সমস্ত কোষে neighbours.v. প্রজন্মের পছন্দসই সংখ্যার জন্য iii-iv ধাপগুলি পুনরাবৃত্তি করুন৷ইনস্টলেশন:
কনওয়েস গেম অফ লাইফ তৈরি করতে আমরা ম্যাটপ্লটলিব এবং নম্পি অ্যারে লাইব্রেরি ব্যবহার করতে যাচ্ছি। numpy এবং matplolib ইনস্টল করতে, pip-
ব্যবহার করুন$pip install numpy, matplolib
জীবনের কনওয়েস গেম বাস্তবায়নের প্রোগ্রাম:
এখন আমাদের উপরের নিয়ম অনুসারে প্রোগ্রাম লেখার সময়। নীচে জীবনের খেলা বাস্তবায়নের প্রোগ্রাম,
#Import প্রয়োজনীয় libraryimport numpy হিসাবে npimport matplotlib.pyplot pltimport argparseimport সময় হিসাবে#-------------------------------- ----------------------------------------- ক্লাস বোর্ড (অবজেক্ট):def __init__( self, size, seed ='Random'):if seed =='Random':self.state =np.random.randint(2, size=size) self.engine =Engine(self) self.iteration =0 def animate (self):i =self.iteration im =None plt.title("কনওয়ে'স গেম অফ লাইফ") যদিও সত্য:যদি i ==0:plt.ion() im =plt.imshow(self.state, vmin =0 , vmax =2, cmap =plt.cm.gray) else:im.set_data(self.state) i +=1 self.engine.applyRules() print('জীবন চক্র:{} জন্ম:{} বেঁচে থাকা:{} '.ফরম্যাট(i, self.engine.nBirth, self.engine.nSurvive)) plt.pause(0.01) yield self#---------------------- -------------------------------------------------- -ক্লাস ইঞ্জিন(অবজেক্ট):def __init__(self, board):self.sta te =board.state def count Neighbours(self):state =self.state n =(state[0:-2,0:-2] + state[0:-2,1:-1] + state[0:- 2,2:] + স্টেট[1:-1,0:-2] + স্টেট[1:-1,2:] + স্টেট[2:,0:-2] + স্টেট[2:,1:-1 ] + state[2:,2:]) রিটার্ন n def applyRules(self):n =self.countNeighbours() state =self.state birth =(n ==3) &(state[1:-1,1:-1] ==0) বেঁচে থাকা =((n ==2) | (n ==3)) &(state[1:-1,1:-1] ==1) state[...] =0 state[1:-1,1:-1][জন্ম | survive] =1 nBirth =np.sum(birth) self.nBirth =nBirth nSurvive =np.sum(sirvive) self.nSurvive =nSurvive return state#----------------- -------------------------------------------------- ------def main():ap =argparse.ArgumentParser(add_help =False) # আর্গুমেন্ট পার্সার ap.add_argument('-h', '--height', help ='বোর্ডের উচ্চতা', ডিফল্ট =256 ) ap.add_argument('-w', '--width', help ='বোর্ড প্রস্থ', ডিফল্ট =256) args =vars(ap.parse_args()) # আর্গুমেন্ট সংগ্রহ করুন bHeight =int(args['height'] ) bWidth =int(args['width']) board =Board((bHeight,bWidth)) _ in board.animate():pass#----------------- -------------------------------------------------- ------যদি __name__ =='__main__':main()
আউটপুট
কনসোল:জীবন চক্র:1 জন্ম:7166 বেঁচে থাকা:10621 জীবনচক্র:2 জন্ম:7930 বেঁচে থাকা:8409 জীবনচক্র:3 জন্ম:7574 বেঁচে থাকা:8756 জীবনচক্র:4 জন্ম:10621 জীবনচক্র:4 সারভাইভ:7501 জন্ম:7930 8126 জীবনচক্র:6 জন্ম:6644 বেঁচে থাকা:7926 জীবনচক্র:7 জন্ম:6266 বেঁচে থাকা:7711 জীবনচক্র:8 জন্ম:6132 বেঁচে থাকা:7427 জীবনচক্র:9 জন্ম:5956 জীবন চক্র:9 জন্ম:5956 বীরত্ব চক্র:19177573 জন্ম :5585 বেঁচে থাকা:6937 জীবনচক্র:12 জন্ম:5381 বেঁচে থাকা:6791 জীবনচক্র:13 জন্ম:5208 বেঁচে থাকা:6686 জীবনচক্র:14 জন্ম:5063 বেঁচে থাকা:6563…..প্রোগ্রাম বন্ধ করার জন্য আমরা আমাদের টার্মিনালে Ctrl-C চাপা না হওয়া পর্যন্ত উপরের ফলাফল আসতে থাকবে।
গ্রাফিকাল ডিসপ্লে:
কোষ পরিবর্তন করতে থাকবে এবং খুব সুন্দর প্যাটার্ন অনুকরণ করবে।
আপনি সেটিংস পরিবর্তন করে এবং স্লাইডার মান পরিবর্তন করে উপরের সাবপ্লট পরিবর্তন করতে পারেন: