प्रस्तावना:
मैं परीक्षण मामलों को प्रशिक्षित करना चाहता था, इसलिए मैं उन्हें कुछ आसान करने की कोशिश कर रहा हूं।
चुनौती:
किसी भी दिए गए (स्ट्रिंग) इनपुट (दृश्यमान ASCII रेंज के भीतर) को लें और घटाएं कि क्या यह एक संख्या और आउटपुट है जिसका मूल्यांकन करने के लिए उपयोग किया जा सकता है।
नियम:
- एक संख्या में केवल वर्ण होंगे
-0123456789,. - उत्तर केवल -1000000000 और 1000000000 (अनन्य) के बीच की संख्या को पहचानने के लिए आवश्यक हैं, लेकिन मनमाने ढंग से बड़ी संख्या को पहचान सकते हैं।
- आप एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिख सकते हैं।
- यदि कोई संख्या, ऐसी किसी भी चीज़ को लौटाती है, जिसका उपयोग उसे समझने और विवरण में आउटपुट (उदाहरण के लिए
My program outputs T if a number, F if not.) करने के लिए किया जा सकता है । - इनपुट ASCII सीमा के भीतर या खाली होने पर वर्णों की कोई भी राशि होगी (यदि कोई संख्या नहीं तो आप जो भी आउटपुट देंगे उसे खाली कर देंगे)।
- संख्याओं में दशमलव बिंदु (पूर्व
3.14) शामिल हो सकता है । यदि वे करते हैं, तो उनके पास दशमलव बिंदु से पहले कम से कम एक अंक और इसके बाद कम से कम एक अंक होना चाहिए। - संख्याओं में अग्रणी या अनुगामी शून्य (उदा।
000001.00000) हो सकता है। - संख्या के पूर्णांक भाग को पठनीयता के लिए तीन अंकों के अल्पविराम (पूर्व
1,000.23456) के साथ विभाजित किया जा सकता है । इस मामले में वे करने के लिए छोड़ दिया सही से हर तीन अंक विभाजित किया जाना चाहिए (उदा।1,234,567,10,000.202,123,234.00,0,123.293)। - नकारात्मक संख्या एक अग्रणी
-(पूर्व-1.23) द्वारा इंगित की जाती है ।+सकारात्मक संख्या को इंगित करने के लिए एक अग्रणी की अनुमति नहीं है, और परिणाम में झूठा होना चाहिए। - अपवादों को मान्य और
Exception on line N [...]घटिया आउटपुट के रूप में नहीं गिना जाता है (सिवाय तब जब वे आउटपुट को मानक आउट स्ट्रीम में पारित कर सकते हैं (पूर्व में नंबर / नॉनम्बर के लिए आउटपुट के रूप में डाला जा सकता है यदि स्ट्रिंग को मानक स्ट्रीम में डाल दिया जाए।
परीक्षण के मामलों:
( My program outputs T if a number, F if not.संस्करण मानकर )
123 -> T [on integer]
-123 -> T [negative numbers need to be handled]
0 -> T [on zero]
123.456 -> T [on floating point]
123,456.789 -> T [on evenly divided by 3 digits with comas]
123456789 -> T [thousand separators are not required]
0000001.00000 -> T [on leading/trailing zeros]
00.00 -> T [on zero and leading/trailing zeros]
999999999.9999999999999999999999999999999999999999999999999999 -> T [on close to the maximum value]
-999999999.9999999999999999999999999999999999999999999999999999 -> T [on close to the minimum value]
-> F [on empty]
lolz -> F [on non-number value]
n4melyh4xor -> F [on non-number with digits]
1.2 -> F [on space-padded]
9.3 1.3 -> F [on anyhow separated multiple numbers]
1e5 -> F [no scientific notation]
50cl05e.buty3ts0f4r -> F [on input with letters obscuring the number]
1,2,3,4.5678 -> F [on badly readability-divided number]
1,234.5,678 -> F [on readability-divided floating point part]
.234 -> F [on no leading zero]
+1 -> F [no leading + sign]
1.234.3 -> F [only one decimal point]
12345,678 -> F [on separator stopping mid-way]
कोड-गोल्फ , कम से कम वर्ण विजेता है।
-123ठीक है, तो किस बारे में +456-> अच्छा या बुरा। या +पार्टी से बाहर रखा गया है?