2010-12-21 24 views
5

Another SO question Yusuke Endoh द्वारा एक शानदार क्विन का उल्लेख है। एक क्विन एक कंप्यूटर प्रोग्राम है जो अपने स्वयं के स्रोत कोड की एक प्रति अपने उत्पादन के रूप में बनाता है; यह एक मोड़ के साथ करता है। A must-seeयह शानदार क्विन कैसे काम करता है?

लेकिन मैं यह नहीं समझ सकता कि यह कैसे काम करता है। कोई संकेतक?

+0

उस पोस्ट पर टिप्पणियां एक सभ्य शुरुआत हैं। "मोड़" पर पन के लिए –

+1

+1। एक यूट्यूब दिखा रहा है कि यह पूर्ण 360 डिग्री रोटेशन [http://www.youtube.com/watch?v=ktq-22iq-Po) के माध्यम से 1 डिग्री से आगे बढ़ रहा है जो देखने के लिए मनोरंजक है। ध्यान दें कि एकमात्र अन्य झटकेदार पाठ ऊपरी बाईं ओर है जहां 'v' परिभाषित किया गया है। – RBerteig

उत्तर

6

सबसे पहले, ध्यान दें कि v= लाइन और ASCII ग्लोब प्रत्येक पीढ़ी पर बदलने वाले कोड का एकमात्र बिट है। यह हमें इस बात का एक संकेत देता है कि वास्तव में यहां क्या चल रहा है।

बुनियादी सिद्धांत है कि दुनिया संहिता की पहली छमाही में Zlib::Deflate से एन्कोड किया गया है, और दूसरी छमाही Zlib::Inflate साथ वह फैलता, इसे पढ़ता है, और नए कोड के भीतर ASCII दुनिया खींचता है, नए v साथ मूल्य। 45 डिग्री बदलावों के बारे में विशेष रूप से विशेष कुछ नहीं है; कोड आपको जो भी रोटेशन पसंद करता है उस पर दुनिया को आकर्षित करेगा। (वास्तव में, यदि आप चाहें तो डिग्री की संख्या निर्दिष्ट करते हुए एक कमांड लाइन तर्क लेता है।)

अधिक कार्यान्वयन विवरण के लिए, मैं स्रोत कोड का विस्तार करने और इसके माध्यम से ट्रेसिंग करने की अनुशंसा करता हूं, इस बारे में मूलभूत समझ के साथ क्विन डिजाइन किया गया है :)

संबंधित मुद्दे