1984 में, माइकल क्रिच्टन ने BASIC में एक सुरक्षा कार्यक्रम लिखा जो क्रिएटिव कंप्यूटिंग पत्रिका में प्रकाशित हुआ था। कार्यक्रम उपयोगकर्ता को उसकी पसंद का एक वाक्यांश टाइप करने, कीस्ट्रोक्स के बीच अंतराल रिकॉर्ड करने के लिए कहेंगे, फिर उसे वाक्यांश को फिर से लिखने के लिए कहेंगे। यदि समय बहुत अधिक भिन्न होता है, तो प्रोग्राम उपयोगकर्ता को एक इम्पोर्टर के रूप में पहचानता है।
आपका असाइनमेंट: अपनी पसंद की भाषा में क्रिचटन के प्रोग्राम का एक संस्करण बनाएं।
नियम:
उपयोगकर्ता के साथ संवाद करने के लिए वाक्यांश ("कृपया कुंजी वाक्यांश टाइप करें," "कृपया कुंजी वाक्यांश फिर से टाइप करें," आदि) वास्तविक लंबाई की परवाह किए बिना प्रत्येक बाइट को गिनें। यह केवल उपयोगकर्ता संचार के लिए है, स्ट्रिंग्स में प्रोग्राम कोड को छिपाने की कोशिश न करें।
पास / असफल परीक्षा मूल अंतराल से प्रतिशत भिन्नताओं के औसत निरपेक्ष मूल्य पर आधारित होनी चाहिए। यदि तार मेल नहीं खाते हैं, तो या तो विफल हो जाते हैं या उपयोगकर्ता को आपके विवेक पर फिर से प्रयास करने की अनुमति देते हैं।
मुख्य वाक्यांश को अशक्त स्ट्रिंग की अनुमति नहीं देनी चाहिए। इस घटना में कुंजी वाक्यांश आपके स्ट्रिंग डेटाटाइप के लिए बहुत लंबा है, या तो छंटनी या विघटित करें और अपने विवेक पर शुरू करें।
परीक्षण की संवेदनशीलता (पास / असफल परीक्षा के लिए सीमा) स्रोत कोड में समायोज्य होनी चाहिए।
मैंने मूल बाइट गिनती का मूल रूप से 20% का बोनस प्रदान किया है, यदि आपके स्रोत कोड को डायनासोर के समान रूप से स्वरूपित किया जा सकता है। यह इंगित किया गया है कि यह अत्यधिक व्यक्तिपरक है और शायद एक लोकप्रियता प्रतियोगिता के लिए अधिक उपयुक्त है, इसलिए मैंने इस बोनस को हटा दिया है। हालाँकि मैं अभी भी दिल से डायनासोर प्रारूपण को प्रोत्साहित करता हूं, और यदि आप एक डायनासोर की तरह दिखने के लिए अपने कोड को प्रारूपित करते हैं, तो आप अपने बाइट कुल से किसी भी शुद्ध कॉस्मेटिक टिप्पणियों, लाइनब्रेक या व्हाट्सएप पात्रों को काट सकते हैं।
सबसे छोटी बाइट गिनती जीत, स्ट्रिंग-लंबाई और डायनासोर प्रारूपण समायोजन के अधीन है।
ध्यान दें कि ऊपर दिया गया मेरा विनिर्देश क्रिच्टन के कोड के संचालन से बिल्कुल मेल नहीं खाता है, जिसकी प्रतियां ऑनलाइन मिल सकती हैं। कल्पना का पालन करें, मूल क्लोन करने की कोशिश मत करो।
"Please type the key phrase"1 बाइट के रूप में गिना जाता है, या केवल वाक्यांश गिनती और उद्धृत वाक्यांश 3 बाइट्स ( ", वाक्यांश, ") के रूप में गिना जाता है ? क्या यह जानबूझकर किया जाता है कि एक बहुत लंबा अंतराल और एक बहुत छोटा अंतराल "रद्द" हो जाएगा और फिर से बन जाएगा? क्या कार्यक्रम को सत्यापित करना है कि दो प्रमुख वाक्यांश मेल खाते हैं?