अधिक प्रतिष्ठित xkcd स्ट्रिप्स में से एक में, रान्डेल मुनरो ने कथा चार्ट में कई फिल्मों की समयसीमा की कल्पना की:
(बड़े संस्करण के लिए क्लिक करें)
स्रोत: xkcd नंबर 657 ।
एक फिल्म (या कुछ अन्य कथा) की समयरेखा के विनिर्देश को देखते हुए, आप इस तरह के चार्ट को उत्पन्न करने के लिए हैं। यह एक लोकप्रियता प्रतियोगिता है, इसलिए सबसे (शुद्ध) वोटों के साथ जवाब जीत जाएगा।
न्यूनतम आवश्यकताएं
कल्पना को थोड़ा कसने के लिए, यहां उन सुविधाओं का न्यूनतम सेट है, जिन्हें हर उत्तर को लागू करना चाहिए:
इनपुट के रूप में चरित्र नामों की सूची लें, उसके बाद घटनाओं की सूची। प्रत्येक घटना या तो मरने वाले पात्रों की सूची है, या पात्रों के समूहों की एक सूची है (यह दर्शाता है कि वर्तमान में कौन से वर्ण एक साथ हैं)। यहाँ एक उदाहरण है कि जुरासिक पार्क कथा को कैसे एन्कोड किया जा सकता है:
["T-Rex", "Raptor", "Raptor", "Raptor", "Malcolm", "Grant", "Sattler", "Gennaro", "Hammond", "Kids", "Muldoon", "Arnold", "Nedry", "Dilophosaurus"] [ [[0],[1,2,3],[4],[5,6],[7,8,10,11,12],[9],[13]], [[0],[1,2,3],[4,7,5,6,8,9,10,11,12],[13]], [[0],[1,2,3],[4,7,5,6,8,9,10],[11,12],[13]], [[0],[1,2,3],[4,7,5,6,9],[8,10,11,12],[13]], [[0,4,7],[1,2,3],[5,9],[6,8,10,11],[12],[13]], [7], [[5,9],[0],[4,6,10],[1,2,3],[8,11],[12,13]], [12], [[0, 5, 9], [1, 2, 3], [4, 6, 10, 8, 11], [13]], [[0], [5, 9], [1, 2], [3, 11], [4, 6, 10, 8], [13]], [11], [[0], [5, 9], [1, 2, 10], [3, 6], [4, 8], [13]], [10], [[0], [1, 2, 9], [5, 6], [3], [4, 8], [13]], [[0], [1], [9, 5, 6], [3], [4, 8], [2], [13]], [[0, 1, 9, 5, 6, 3], [4, 8], [2], [13]], [1, 3], [[0], [9, 5, 6, 3, 4, 8], [2], [13]] ]
उदाहरण के लिए, पहली पंक्ति का मतलब है कि चार्ट की शुरुआत में, टी-रेक्स एक अकेला है, तीन रैप्टर एक साथ हैं, मैल्कम अकेला है, ग्रांट और सैटलर एक साथ हैं, आदि दूसरी से अंतिम घटना का मतलब है कि रैप्टर के दो मर जाते हैं। ।
जब तक आप इनपुट की अपेक्षा करते हैं, तब तक आपके लिए इस तरह की जानकारी निर्दिष्ट की जा सकती है। उदाहरण के लिए, आप किसी भी सुविधाजनक सूची प्रारूप का उपयोग कर सकते हैं। आप घटनाओं में पात्रों को फिर से पूर्ण चरित्र नाम आदि की अपेक्षा कर सकते हैं।
आप कर सकते हैं (लेकिन ऐसा नहीं है) मान लें कि समूहों की प्रत्येक सूची में प्रत्येक समूह में प्रत्येक जीवित चरित्र शामिल है। हालाँकि, आपको यह नहीं मान लेना चाहिए कि एक घटना के भीतर समूह या वर्ण विशेष रूप से सुविधाजनक क्रम में हैं।
स्क्रीन या फ़ाइल (एक वेक्टर या रेखापुंज ग्राफिक के रूप में) के लिए रेंडर एक चार्ट जिसमें प्रत्येक वर्ण के लिए एक पंक्ति है। प्रत्येक पंक्ति को पंक्ति के आरंभ में एक वर्ण नाम के साथ लेबल किया जाना चाहिए।
- प्रत्येक सामान्य घटना के लिए, क्रम में, चार्ट के कुछ क्रॉस-सेक्शन होना चाहिए जिसमें वर्णों के समूह स्पष्ट रूप से उनकी संबंधित लाइनों की निकटता से मिलते-जुलते हैं।
- प्रत्येक मौत की घटना के लिए, संबंधित पात्रों की पंक्तियों को एक दृश्यमान बूँद में समाप्त करना होगा।
- आपको रान्डेल के भूखंडों की किसी भी अन्य विशेषता को पुन: पेश करने की आवश्यकता नहीं है, न ही आपको उनकी ड्राइंग शैली को पुन: पेश करना है। तेज मोड़ों के साथ सीधी रेखाएं, सभी काले रंग में, आगे के लेबल के बिना और प्रतियोगिता में प्रवेश करने के लिए एक शीर्षक बिल्कुल ठीक है। वहाँ भी कुशलता से अंतरिक्ष का उपयोग करने की कोई जरूरत नहीं है - जैसे कि आप संभावित रूप से अन्य वर्णों के साथ मिलने के लिए केवल नीचे की ओर जाने वाली लाइनों द्वारा एल्गोरिथ्म को सरल बना सकते हैं, जब तक कि समय की एक स्पष्ट दिशा है।
मैंने एक संदर्भ समाधान जोड़ा है जो इन न्यूनतम आवश्यकताओं को पूरा करता है।
यह सुंदर बना रही है
हालांकि यह एक लोकप्रियता प्रतियोगिता है, इसलिए इसके शीर्ष पर, आप जो भी चाहते हैं, उसे लागू कर सकते हैं। सबसे महत्वपूर्ण जोड़ एक सभ्य लेआउटिंग एल्गोरिथ्म है जो चार्ट को अधिक सुपाठ्य बनाता है - जैसे कि जो लाइनों का अनुसरण करने में आसान बनाता है और जो आवश्यक लाइन क्रॉसिंग की संख्या को कम करता है। यह इस चुनौती की मुख्य एल्गोरिथम समस्या है! वोट तय करेंगे कि आपका एल्गोरिथ्म चार्ट को ठीक रखने में कितना अच्छा प्रदर्शन करता है।
लेकिन यहाँ कुछ और विचार हैं, उनमें से ज्यादातर रान्डेल के चार्ट के आधार पर हैं:
सजावट:
- रंगीन रेखाएँ।
- कथानक का एक शीर्षक।
- लेबलिंग लाइन समाप्त होती है।
- स्वचालित रूप से relabelling लाइनें जो एक व्यस्त अनुभाग से गुजरी हैं।
- हाथ से तैयार शैली (या अन्य! जैसा कि मैंने कहा, रैंडल की शैली को पुन: पेश करने की कोई आवश्यकता नहीं है यदि आपके पास बेहतर विचार है) लाइनों और फोंट के लिए।
- समय अक्ष के अनुकूलन उन्मुखीकरण।
अतिरिक्त अभिव्यक्ति:
- नामित घटनाओं / समूहों / मौतों।
- गायब और फिर से दिखाई देने वाली लाइनें।
- देर से प्रवेश करने वाले पात्र।
- हाइलाइट्स जो वर्णों के हस्तांतरणीय (?) गुणों को दर्शाते हैं (उदाहरण के लिए, लोटआर चार्ट में रिंगबियर देखें)।
- समूहीकरण अक्ष में अतिरिक्त जानकारी को एन्कोड करना (जैसे भौगोलिक सूचना जैसे लोटआर चार्ट में)।
- समय यात्रा?
- वैकल्पिक वास्तविकताओं?
- एक चरित्र दूसरे में बदल रहा है?
- दो पात्रों का विलय? (एक चरित्र विभाजन?)
- 3 डी? (यदि आप वास्तव में इतनी दूर जाते हैं, तो कृपया सुनिश्चित करें कि आप वास्तव में अतिरिक्त आयाम का उपयोग कर रहे हैं कि कुछ कल्पना करें!)
- किसी भी अन्य प्रासंगिक विशेषताएं, जो किसी फिल्म (या पुस्तक आदि) के कथानक की कल्पना करने के लिए उपयोगी हो सकती हैं।
बेशक, इनमें से कई को अतिरिक्त इनपुट की आवश्यकता होगी, और आप आवश्यक के रूप में अपने इनपुट प्रारूप को बढ़ाने के लिए स्वतंत्र हैं, लेकिन कृपया यह दस्तावेज करें कि डेटा कैसे दर्ज किया जा सकता है।
आपके द्वारा कार्यान्वित सुविधाओं को दिखाने के लिए कृपया एक या दो उदाहरण शामिल करें।
आपका समाधान किसी भी मान्य इनपुट से निपटने में सक्षम होना चाहिए, लेकिन यह बिल्कुल ठीक है अगर यह दूसरों की तुलना में कुछ प्रकार के आख्यानों के लिए बेहतर है।
वोटिंग क्राइटेरिया
मुझे कोई भ्रम नहीं है कि मैं लोगों को बता सकता हूं कि उन्हें अपना वोट कैसे खर्च करना चाहिए, लेकिन महत्व के क्रम में यहां कुछ सुझाव दिए गए हैं:
- डाउनवोट उत्तर जो कमियां, मानक वाले या दूसरों का शोषण करते हैं, या हार्डकोड एक या अधिक परिणाम देते हैं।
- ऐसे उत्तर न दें जो न्यूनतम आवश्यकताओं को पूरा नहीं करते (कोई फर्क नहीं पड़ता कि बाकी कैसे हो सकता है)।
- और सबसे पहले, अच्छा लेआउट एल्गोरिदम upvote। इसमें ऐसे उत्तर शामिल हैं, जो ग्राफ़ को सुपाठ्य रखने के लिए लाइनों को पार करते समय ऊर्ध्वाधर स्थान का बहुत अधिक उपयोग नहीं करते हैं, या जो ऊर्ध्वाधर अक्ष में अतिरिक्त जानकारी को एन्कोड करने का प्रबंधन करते हैं। भारी गड़बड़ी किए बिना समूहों की कल्पना करना इस चुनौती का मुख्य केंद्र होना चाहिए, जैसे कि यह एक प्रोग्रामिंग प्रतियोगिता है जिसमें एक दिलचस्प एल्गोरिदम समस्या है।
- वैकल्पिक सुविधाओं को अपवोट करें जो अभिव्यंजक शक्ति को जोड़ते हैं (यानी केवल शुद्ध सजावट नहीं हैं)।
- अंत में, अच्छी प्रस्तुति को बढ़ाएं।
[[x,y,z]]
इसका मतलब यह होगा कि सभी पात्र वर्तमान में एक साथ हैं। लेकिन अगर घटना में सूचियाँ नहीं होती हैं, लेकिन केवल पात्र सीधे होते हैं, तो यह मृत्यु भी है, इसलिए उसी स्थिति में [x,y,z]
इसका मतलब है कि वे तीन वर्ण मर जाते हैं। एक और प्रारूप का उपयोग करने के लिए स्वतंत्र महसूस करें, एक स्पष्ट संकेत के साथ कि क्या कुछ मृत्यु या समूहन घटना है अगर यह आपकी मदद करता है। उपरोक्त प्रारूप केवल एक सुझाव है। जब तक आपका इनपुट प्रारूप कम से कम अभिव्यंजक है, तब तक आप कुछ और उपयोग कर सकते हैं।