Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

कॉनवे का जीवन का खेल पायथन का उपयोग कर रहा है?

लगभग 1970 में एक ब्रिटिश गणितज्ञ ने अपना "गेम ऑफ लाइफ" बनाया - जो मूल रूप से जैविक जीवों के एक उपनिवेश के अराजक लेकिन पैटर्न वाले विकास को दर्शाने वाले नियमों का एक समूह है। "जीवन का खेल" एक द्वि-आयामी ग्रिड है जिसमें "जीवित" और "मृत" कोशिकाएं होती हैं।

जीवन के खेल के नियम

  • अधिक जनसंख्या :एक कोशिका मर जाती है (बंद) यदि वह तीन से अधिक जीवित कोशिकाओं से घिरी हो।

  • स्थिर :एक कोशिका जीवित रहती है (चालू) यदि वह दो या तीन जीवित कोशिकाओं से घिरी हो।

  • कम जनसंख्या :एक कोशिका मर जाती है (बंद) यदि वह दो से कम जीवित कोशिकाओं से घिरी हो।

  • प्रजनन :एक कोशिका जीवित (चालू) हो जाती है यदि एक मृत कोशिका ठीक तीन कोशिकाओं से घिरी हो।

कॉनवे का जीवन का खेल पायथन का उपयोग कर रहा है?

कॉनवे का जीवन का खेल पायथन का उपयोग कर रहा है? सेल अगले टाइमस्टैम्प में मरने वाला है

कॉनवे का जीवन का खेल पायथन का उपयोग कर रहा है? सेल अगले टाइमस्टैम्प में रहने वाला है

कॉनवे का जीवन का खेल पायथन का उपयोग कर रहा है? सेल जीवित है

कॉनवे का जीवन का खेल पायथन का उपयोग कर रहा है? सेल मर चुका है

क्रमिक चरणों में नियमों के उपरोक्त सेट को लागू करने से हम सुंदर और अप्रत्याशित पैटर्न प्राप्त करेंगे।

कार्यान्वयन के चरण:

i. Initialise an empty universe
ii. Fill the universe with the seed
iii. Calculate if the current cell survives to the next timestamps, based on its neighbours
iv. Repeat this survival function(like step-iii) over all the cells in the universe neighbours.
v. Repeat steps iii-iv for the desired number of generations.

इंस्टॉलेशन:

जीवन का खेल बनाने के लिए हम उपयोग करने जा रहे हैं, matplotlib और numpy arrays पुस्तकालय। numpy और matplolib स्थापित करने के लिए, पाइप का उपयोग करें-

$pip install numpy, matplolib

जीवन के कॉनवे गेम को लागू करने का कार्यक्रम:

अब हमारे उपरोक्त नियमों के अनुसार कार्यक्रम लिखने का समय आ गया है। जीवन के खेल को लागू करने का कार्यक्रम नीचे दिया गया है,

#Import required library

import numpy as np
import matplotlib.pyplot as plt

import argparse
import time

#-------------------------------------------------------------------------
class Board(object):
   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("Conway's Game of Life")
      while True:
         if 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('Life Cycle: {} Birth: {} Survive: {}'.format(i, self.engine.nBirth, self.engine.nSurvive))
         plt.pause(0.01)
         yield self

#-------------------------------------------------------------------------

class Engine(object):
   def __init__(self, board):
      self.state = board.state
   def countNeighbors(self):
      state = self.state
      n = (state[0:-2,0:-2] + state[0:-2,1:-1] + state[0:-2,2:] +
          state[1:-1,0:-2] + state[1:-1,2:] + state[2:,0:-2] +
          state[2:,1:-1] + state[2:,2:])
      return n
   def applyRules(self):
      n = self.countNeighbors()
      state = self.state
      birth = (n == 3) & (state[1:-1,1:-1] == 0)
      survive = ((n == 2) | (n == 3)) & (state[1:-1,1:-1] == 1)
      state[...] = 0
      state[1:-1,1:-1][birth | survive] = 1
      nBirth = np.sum(birth)
      self.nBirth = nBirth
      nSurvive = np.sum(survive)
      self.nSurvive = nSurvive
   return state

#-------------------------------------------------------------------------

def main():
   ap = argparse.ArgumentParser(add_help = False) # Intilialize Argument Parser
   ap.add_argument('-h', '--height', help = 'Board Height', default = 256)
   ap.add_argument('-w', '--width', help = 'Board Width', default = 256)
   args = vars(ap.parse_args()) # Gather Arguments
   bHeight = int(args['height'])
   bWidth = int(args['width'])
   board = Board((bHeight,bWidth))
   for _ in board.animate():
      pass
#-------------------------------------------------------------------------

if __name__ == '__main__':
   main()

आउटपुट

Console:
Life Cycle: 1 Birth: 7166 Survive: 10621
Life Cycle: 2 Birth: 7930 Survive: 8409
Life Cycle: 3 Birth: 7574 Survive: 8756
Life Cycle: 4 Birth: 7114 Survive: 8406
Life Cycle: 5 Birth: 7005 Survive: 8126
Life Cycle: 6 Birth: 6644 Survive: 7926
Life Cycle: 7 Birth: 6266 Survive: 7711
Life Cycle: 8 Birth: 6132 Survive: 7427
Life Cycle: 9 Birth: 5957 Survive: 7322
Life Cycle: 10 Birth: 5769 Survive: 7290
Life Cycle: 11 Birth: 5585 Survive: 6937
Life Cycle: 12 Birth: 5381 Survive: 6791
Life Cycle: 13 Birth: 5208 Survive: 6686
Life Cycle: 14 Birth: 5063 Survive: 6563
….
…

उपरोक्त परिणाम तब तक आते रहेंगे जब तक हम प्रोग्राम को रोकने के लिए अपने टर्मिनल में Ctrl-C दबाते हैं।

ग्राफिकल डिस्प्ले:

कॉनवे का जीवन का खेल पायथन का उपयोग कर रहा है?

कोशिकाएं बदलती रहेंगी और बहुत सुंदर पैटर्न का अनुकरण करेंगी।

आप सेटिंग्स को बदलकर उपरोक्त सबप्लॉट को बदल सकते हैं और स्लाइडर मान को बदल सकते हैं:

कॉनवे का जीवन का खेल पायथन का उपयोग कर रहा है?


  1. पायथन का उपयोग करके लिनक्स टर्मिनल में स्वरूपित पाठ

    इस खंड में, हम देखेंगे कि लिनक्स टर्मिनल में स्वरूपित टेक्स्ट कैसे प्रिंट करें। फ़ॉर्मेटिंग करके, हम टेक्स्ट का रंग, शैली और कुछ विशेष सुविधाओं को बदल सकते हैं। लिनक्स टर्मिनल स्वरूपण, रंग और अन्य सुविधाओं को नियंत्रित करने के लिए कुछ एएनएसआई एस्केप अनुक्रमों का समर्थन करता है। इसलिए हमें टेक्स्ट क

  1. पायथन में टिंकर का उपयोग करके रंग खेल

    जीयूआई अनुप्रयोगों के विकास के लिए टिंकर बहुत लोकप्रिय और आसान है। tkinter का उपयोग करके आसानी से GUI गेम विकसित करें। यहां भी हम कलर गेम विकसित करने की कोशिश कर रहे हैं। इस गेम में खिलाड़ी को स्क्रीन पर दिखाई देने वाले शब्द का रंग दर्ज करना होता है और इसलिए स्कोर एक से बढ़ जाता है, इस गेम को खेलने

  1. पायथन में CX_Freeze का उपयोग करना

    कभी-कभी हमें कुछ अलग बनाने का मन करता है जो बहुत ही रोमांचक होता है, और मानव स्वभाव के अनुसार, हम हमेशा इसे साझा करना पसंद करते हैं। पायथन भी उन इच्छाओं को पूरा करता है। पायथन का उपयोग करते हुए, यदि हम अपने पायथन प्रोग्राम को अपने दोस्तों के साथ साझा करना चाहते हैं, तो हम ऐसा कर सकते हैं, केवल उन स