Conway's Game of Life में एक डिजिटल घड़ी बनाएँ


478

आपका कार्य डिजिटल घड़ी का प्रतिनिधित्व करने वाले गेम ऑफ़ लाइफ सिमुलेशन का निर्माण करना है, जो निम्नलिखित गुणों को संतुष्ट करता है:

  1. घड़ी घंटे और दशमलव में मिनट प्रदर्शित करता है (उदाहरण के लिए 12:00, 3:59, 7:24) दिन के 1,440 मिनट से प्रत्येक के लिए एक अलग राज्य के साथ - या तो घंटे 0 से 23 या 1 से एक बजे सूचक के साथ 12 के लिए जाना जाएगा।

  2. पैटर्न आवधिक है, और राज्य किसी भी बाहरी बातचीत के बिना चारों ओर घूमता है।

  3. मिनट नियमित अंतराल पर अपडेट होते हैं - मिनट के एक बदलाव से लेकर अगली पीढ़ी तक समान संख्या में होते हैं।

  4. एक अनाम दर्शक एक नज़र में यह बताने में सक्षम है कि डिस्प्ले डिजिटल घड़ी माना जाता है। विशेष रूप से, यह वर्जित है:

    • अंक दिखाई देते हैं और स्पष्ट रूप से अलग हैं। आप एक नज़र में निश्चितता के साथ बता सकते हैं कि क्या समय प्रदर्शित किया जा रहा है।

    • अंक जगह में अद्यतन करते हैं। प्रत्येक नया नंबर पिछली संख्या के समान स्थान पर दिखाई देता है, और अंकों के बाउंडिंग बॉक्स की कोई गति नहीं होती है। (विशेष रूप से, एक अंक में अलग-अलग स्थानों में 10 अलग-अलग अंक नहीं होते हैं जो हर बार अंक बदलते हैं।)

    • अंक एक दूसरे के बगल में दिखाई देते हैं, उनके बीच अत्यधिक मात्रा में जगह के बिना।


आपका कार्यक्रम निम्न बातों पर, क्रम में (उच्च मानदंडों के लिए टाईब्रेकर के रूप में अभिनय के साथ) स्कोर किया जाएगा।

  • बाउंडिंग बॉक्स आकार - सबसे छोटे क्षेत्र के साथ आयताकार बॉक्स जिसमें पूरी तरह से दिए गए समाधान जीतते हैं।

  • सबसे तेज़ निष्पादन - एक मिनट की जीत को आगे बढ़ाने वाली सबसे कम पीढ़ी।

  • प्रारंभिक लाइव सेल काउंट - छोटी काउंट जीत।

  • पहली पोस्ट करने के लिए - पहले पोस्ट जीतता है।


5
@tuskiomi नहीं, प्रदर्शन दशमलव होना चाहिए।
जो जेड।

2
मुझे पूरा यकीन है कि यह B3 / S23 है, लेकिन क्या आप पुष्टि या इनकार कर सकते हैं?
कॉनर ओ'ब्रायन

2
"उन्हें जगह में भी अपडेट करना होगा - प्रत्येक नए नंबर को पिछली संख्या के समान स्थान पर दिखाई देना चाहिए।" आप "उसी स्थान पर" कैसे परिभाषित करते हैं, क्योंकि अंक आवश्यक रूप से आयताकार नहीं होंगे।
मार्टिन एंडर

4
हमारे दशमलव अंक कितने महत्वपूर्ण होने चाहिए? है "यदि आप जानते हैं कि यह क्या है और आप स्क्विंट करते हैं तो आप 0 और 8 के बीच का अंतर बता सकते हैं", या क्या इसे "एक अनाम समझने वाला पास करने की आवश्यकता है जो बता सकता है कि यह बिना किसी संकेत के परीक्षण के साथ है"?
स्पेर

3
इसे हैकाडे ब्लॉग पर भी पोस्ट किया गया: hackaday.com/2017/03/11/a-clock-created-with-conways-life
Anool Mahidharia

जवाबों:


1012

11,520 पीढ़ी प्रति घड़ी की गिनती / 10,016 x 6,796 बॉक्स / 244,596 पॉप गिनती

वहाँ तुम जाओ ... मजेदार था।

खैर, डिजाइन निश्चित रूप से इष्टतम नहीं है। न तो बाउंडिंग बॉक्स के दृष्टिकोण से (वे 7-खंड अंक विशाल हैं ), न ही प्रारंभिक जनसंख्या गणना से (कुछ बेकार सामान हैं, और कुछ सामान जो निश्चित रूप से सरल बनाया जा सकता है), और निष्पादन की गति - अच्छी तरह से ... मैं मुझे यकीन नहीं है।

लेकिन, हे, यह सुंदर है। देखो:

यहां छवि विवरण दर्ज करें

चलाओ!

इस जिस्ट से डिजाइन प्राप्त करें । संपूर्ण फ़ाइल पाठ को क्लिपबोर्ड पर कॉपी करें।

नई : यहां मांग के लिए AM और PM दोनों संकेतकों के साथ एक संस्करण है

पर जाएं ऑनलाइन जावास्क्रिप्ट कोनवे जीवन सिम्युलेटरआयात पर क्लिक करें , डिज़ाइन टेक्स्ट पेस्ट करें। आपको डिज़ाइन देखना चाहिए। फिर, सेटिंग्स पर जाएं और उन चरणों के आसपास पीढ़ी के चरण को 512 पर सेट करें , या घड़ी प्रदर्शन को देखने के लिए आपको हमेशा इंतजार करना होगा।

रन पर क्लिक करें , थोड़ा इंतजार करें और आश्चर्यचकित हो जाएं!

ब्राउज़र संस्करण में सीधा लिंक

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

यह काम किस प्रकार करता है

इसमें p30 तकनीक का इस्तेमाल किया गया है। बस बुनियादी चीजें, ग्लाइडर और हल्के अंतरिक्ष यान। मूल रूप से, डिजाइन ऊपर-नीचे जाता है:

  • बहुत ऊपर, घड़ी है। यह 11520 अवधि की घड़ी है। ध्यान दें कि डिस्प्ले को उचित रूप से अपडेट करने के लिए आपको लगभग 10.000 पीढ़ियों की आवश्यकता है, लेकिन डिज़ाइन अभी भी छोटी अवधि (लगभग 5.000 या तो - घड़ी को 60 के कई होने की आवश्यकता है) की घड़ी के साथ स्थिर होना चाहिए।
  • फिर, घड़ी वितरण चरण है। घड़ी के ग्लाइडर को एक संतुलित पेड़ में कॉपी किया जाता है, इसलिए अंत में, काउंटर्स चरण में ठीक उसी क्षण 32 ग्लाइडर आते हैं।
  • काउंटर अवस्था प्रत्येक राज्य के लिए और प्रत्येक अंक (हम दशमलव में गिनती कर रहे हैं) के लिए एक आरएस कुंडी का उपयोग करके बनाया गया है। तो मिनटों के दाएं अंक के लिए 10 राज्य हैं, 6 राज्यों के न्यूनतम अंक, और 12 राज्यों में घंटे (दोनों ही घंटों के अंक यहाँ विलय किए गए हैं)। इनमें से प्रत्येक समूह के लिए, काउंटर शिफ्ट रजिस्टर की तरह व्यवहार करता है।
  • काउंटिंग स्टेज के बाद, लुकअप टेबल होते हैं। वे चालू / बंद कार्रवाइयों को प्रदर्शित करने के लिए राज्य दालों को परिवर्तित करते हैं।
  • फिर, प्रदर्शन ही। सेगमेंट को बस LWSS के कई स्ट्रिंग्स के साथ बनाया गया है। प्रत्येक खंड के पास अपना राज्य बनाए रखने के लिए स्वयं कुंडी है। मैं एक साधारण तार्किक-या अंकों के राज्यों को पता कर सकता था कि किसी सेगमेंट को चालू या बंद करना चाहिए, और इन कुंडों से छुटकारा पाना चाहिए, लेकिन गैर-बदलते क्षेत्रों के लिए ग्लिच होंगे, जब अंक बदल रहे होंगे (क्योंकि संकेत देरी)। और लुकअप टेबल से डिजिट सेगमेंट में आने वाली ग्लाइडर की लंबी धाराएँ होंगी। इसलिए यह उतना अच्छा नहीं होगा। और यह होना चाहिए। हाँ।

वैसे भी, वास्तव में इस डिजाइन में कुछ भी असाधारण नहीं है। इस प्रक्रिया में कोई अद्भुत प्रतिक्रियाएं नहीं मिली हैं, और कोई भी वास्तव में चतुर संयोजन नहीं है जो पहले किसी ने नहीं सोचा था। बस बिट्स को यहां और वहां ले जाया गया और एक साथ रखा गया (और मुझे भी यकीन नहीं है कि मैंने इसे "सही" तरीके से किया था - मैं वास्तव में इसके लिए पूरी तरह से नया था)। हालाँकि इसके लिए बहुत धैर्य की आवश्यकता थी। उन सभी ग्लाइडरों को सही समय पर सही स्थिति में लाना सिर को खुजलाना था।

संभावित अनुकूलन:

  • के बजाय एक ही रूट घड़ी की प्रतिलिपि बनाने और वितरित करने के लिए एन काउंटर कोशिकाओं , मैं केवल एक ही घड़ी ब्लॉक एन बार (प्रत्येक काउंटर सेल के लिए एक बार) डाल सकता था । यह वास्तव में बहुत सरल होगा। लेकिन तब मैं इसे एक बिंदु पर घड़ी को बदलकर आसानी से समायोजित नहीं कर पाऊंगा ... और मेरे पास एक इलेक्ट्रॉनिक्स पृष्ठभूमि है, और एक वास्तविक सर्किट में, यह बहुत गलत होगा।
  • प्रत्येक सेगमेंट में इसका RS कुंडी है। इसके लिए R और S दोनों दालों के आउटपुट के लिए लुकअप टेबल की आवश्यकता होती है। यदि हमारे पास एक कुंडी होती जो कि एक सामान्य इनपुट पल्स से केवल अपने राज्य को टॉगल करती, तो हम लुकअप तालिकाओं को आधा बड़ा बना सकते थे। पीएम डॉट के लिए इस तरह की कुंडी है, लेकिन यह बहुत बड़ी है, और मैं कुछ और अधिक व्यावहारिक नहीं आ पा रहा हूं।
  • डिस्प्ले को छोटा करें। लेकिन यह उतना अच्छा नहीं होगा। और यह होना चाहिए। हाँ।

26
सुंदर। अच्छा जवाब।
पावेल

33
@ जोक पर आते हैं, आप इसे स्वयं जोड़ने की कोशिश कर सकते हैं ... वैसे भी, मैंने पोस्ट को आपकी खुशी के लिए AM + PM दोनों के साथ एक संस्करण के साथ संपादित किया है।
मंद

48
जैसा कि आप जानते, इस सवाल का जवाब दिया गया है विशेष रुप से प्रदर्शित में Microsiervos , स्पेनिश में तकनीक के बारे में सबसे महत्वपूर्ण ब्लॉगों में से एक पर, 800K से अधिक अनुयायियों के साथ ट्विटर
लुइस Mendo

26
@ रोरी आप अपना सिर ले जाएं, इसे दीवार पर एक दर्जन बार जितना संभव हो उतना मुश्किल से तोड़ें। फिर आप शुरू करने के लिए तैयार हैं।
मंद

34
तो डिजाइन प्रक्रिया है: "ठीक है, मुझे उससे टकराने की जरूरत है, और मेरा ग्लाइडर इस समय इस स्थिति में वहां से आता है। आइए इसे दो रिफ्लेक्टर का उपयोग करके वहां लाएं। बकवास, इसे टकराने की जरूरत सिर्फ दो पीढ़ी कदम है। बहुत जल्द, वहाँ। अगर मैं रिफ्लेक्टरों को थोड़ा आगे बढ़ाता हूं, तो देखें ... बकवास, बहुत देर हो चुकी है। ठीक है, चलो कुछ और जगह टकराते हैं। बकवास, मेरे पास मेरे ग्लाइडर को बनाने के लिए जगह नहीं है। ठीक है। चलो दो अन्य बेकार रिफ्लेक्टरों को जोड़ते हैं, बजाय इसके वहां पहुंचने के लिए। बकवास, रिफ्लेक्टर ग्लाइडर की इस दूसरी धारा से टकराते हैं ... बकवास, चलो बिस्तर पर चलते हैं। "
मंद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.