कभी-कभी जब मैं एक IPv4 पता टाइप कर रहा होता हूं, तो मुझे सभी नंबर सही मिलते हैं, लेकिन मैं एक या अधिक पीरियड लिखना भूल जाता हूं। मुझे एक प्रोग्राम (या फ़ंक्शन) चाहिए जो मेरे टूटे हुए आईपीवी 4 पते को लेता है और लापता अवधि के सभी संभावित वैध प्लेसमेंट को आउटपुट करता है।
इनपुट
इनपुट हमेशा एक स्ट्रिंग होगा जो एक मान्य IPv4 पते का रूपांतरण है (नीचे दिए गए विवरण देखें)। यह हमेशा एक या एक से अधिक अवधि के पात्रों के उन्मूलन द्वारा रूपांतरित किया जाएगा।
आपको सबमिट करने की आवश्यकता नहीं है कि इस प्रारूप के बाहर इनपुट को संभालना है।
उत्पादन
सभी मान्य IPv4 पतों को दर्शाने वाले तार के किसी विशेष क्रम या प्रारूप में संग्रह या सूची, जो इनपुट में अवधि वर्णों के सम्मिलन द्वारा इनपुट से बनाई जा सकती है।
- आउटपुट एक भाषा-मूल सूची या अन्य आदेशित या अनियोजित संग्रह प्रकार हो सकता है।
- वैकल्पिक रूप से, यह कुछ स्पष्ट तरीके से सीमांकित IPv4 पते का एक स्ट्रिंग अनुक्रम हो सकता है।
- यदि आप अपने स्ट्रिंग को सीमांकित करने के लिए एकल-वर्ण परिसीमन का उपयोग करते हैं, तो उस एकल-वर्ण परिसीमन के रूप में अवधियों और अंकों की अनुमति नहीं है। मुझे लगता है कि, संख्याओं के विपरीत, अवधि के रूप में सीमांकक अस्पष्ट नहीं हैं (चूंकि हर चौथे अवधि आवश्यक रूप से परिसीमन होगा) लेकिन पठनीयता के लिए, मैं इसे अस्वीकार कर रहा हूं।
IPv4 पता प्रारूप
जबकि IPv4 पते वास्तव में केवल चार बाइनरी ऑक्टेट का एक अनुक्रम हैं, यह चुनौती प्रतिबंधित डॉटेड दशमलव प्रारूप का उपयोग करती है।
- IPv4 पता एक चार दशमलव मान है जिसे तीन अवधियों द्वारा अलग किया गया है।
- चार मूल्यों से प्रत्येक श्रेणी में हैं
0
करने के लिए255
समावेशी,। - किसी भी संख्या मूल्य में अग्रणी शून्य की अनुमति नहीं है । (स्टैंडअलोन एक चरित्र
0
की अनुमति दी है, किसी अन्य नंबर एक शून्य के साथ शुरुआत नहीं है:052
,00
, आदि)
परीक्षण के मामलों
इनपुट पहली पंक्ति पर है, दूसरी पंक्ति पर आउटपुट (यहां, उद्धृत स्ट्रिंग्स के अल्पविराम से अलग सूची के रूप में संरचित, अल्पविराम से घिरा हुआ है [
]
, लेकिन आप ऊपर निर्दिष्ट अनुसार किसी भी उचित प्रारूप या संरचना का उपयोग कर सकते हैं)। कुछ उदाहरणों में एक विशेष नियम के आवेदन को उजागर करने के लिए तीसरी पंक्ति पर नोट्स हैं।
192.168.1234
["192.168.1.234", "192.168.12.34", "192.168.123.4"]
192.1681234
["192.16.81.234", "192.168.1.234", "192.168.12.34", "192.168.123.4"]
(Note: 192.1681.2.34 (etc.) is illegal because 1681 is greater than 255)
1921681.234
["19.216.81.234", "192.16.81.234", "192.168.1.234"]
1921681234
["19.216.81.234", "192.16.81.234", "192.168.1.234", "192.168.12.34", "192.168.123.4"]
192.168.1204
["192.168.1.204", "192.168.120.4"]
(Note: 192.168.12.04 is illegal because of leading zero)
192.168.123
["1.92.168.123", "19.2.168.123", "192.1.68.123", "192.16.8.123", "192.168.1.23", "192.168.12.3"]
192.168.256
["192.168.2.56", "192.168.25.6"]
(Note: Any combination that would leave 256 intact is illegal)
120345
["1.20.3.45", "1.20.34.5", "1.203.4.5", "12.0.3.45", "12.0.34.5", "120.3.4.5"]
(Note: 12.03.4.5 (etc.) is illegal due to leading zero.)
012345
["0.1.23.45", "0.1.234.5", "0.12.3.45", "0.12.34.5", "0.123.4.5"]
(Note: the first segment must be 0, because `01` or `012` would be illegal.)
000123
["0.0.0.123"]
(मैंने इन उदाहरणों को हाथ से बनाया है, इसलिए कृपया मुझे उन गलतियों के प्रति सचेत करें जो आपको मिल सकती हैं।)