कभी-कभी, जब मैं निष्क्रिय रूप से कारक की कोशिश कर रहा होता हूं, जो भी संख्या मेरे सामने आती है, तो थोड़ी देर बाद मुझे एहसास होता है कि मैंने जितना सोचा था, यह उतना आसान है। 2156उदाहरण के लिए ले लो : यह अंततः मेरे लिए होता है कि दोनों 21और के 56गुणक हैं 7, और इसलिए निश्चित रूप 2156 = 21 x 100 + 56से भी एक से अधिक है 7।
आपका कार्य कुछ कोड लिखना है जो उन संख्याओं की पहचान करता है जो इस प्रकार के संयोग के कारण कारक के लिए आसान हैं।
ज्यादा ठीक:
एक प्रोग्राम या फ़ंक्शन लिखें जो nइनपुट के रूप में एक सकारात्मक पूर्णांक लेता है , और एक सत्य मान देता है यदि कोई विभाजक d(अधिक से अधिक 1) मौजूद है जैसे कि nदो सकारात्मक पूर्णांक बनाने के लिए दो में कटा हुआ हो सकता है, जिनमें से प्रत्येक एक से अधिक है d; यदि नहीं तो एक मिथ्या मूल्य लौटाएं।
- "दो में कटा हुआ" का अर्थ है कि आप क्या सोचते हैं:
nकिसी भी बिंदु पर विभाजित किए गए सामान्य आधार -10 का प्रतिनिधित्व सामने के आधे हिस्से में और पीछे के आधे हिस्से में दो अन्य आधार -10 पूर्णांकों का उत्पादन होता है। यह ठीक है अगर दूसरे पूर्णांक एक अग्रणी शून्य (लेकिन ध्यान दें कि यह एक सकारात्मक पूर्णांक होना चाहिए, इसलिए बंटवारे है1230में123और0मान्य नहीं है)। - सत्य और मिथ्या मूल्य इनपुट पर निर्भर कर सकते हैं। उदाहरण के लिए, यदि आपकी पसंद की भाषा में कोई भी गैर-पूर्णांक सत्य है, तो आप भाजक
dया उस चीज़ के "टुकड़ों"n(याnस्वयं) में से एक का वापस करने के लिए स्वागत करते हैं । - उदाहरण के लिए, सेट में कम से कम दो अंकों के साथ कोई भी संख्या
{2, 4, 6, 8}एक सत्य मान देगी: बस इसे पहले अंक के बाद भी विभाजित करें। उदाहरण के लिए, किसी भी अभाज्य संख्या मेंnएक गलत मान होगा, जैसे कि कोई भी एक-अंकीय संख्या। - ध्यान दें कि यह प्रधान विभाजकों पर विचार करने के लिए पर्याप्त है
d। - आप मान सकते हैं कि इनपुट वैध है (जो कि एक धनात्मक पूर्णांक है)।
यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है। लेकिन सभी भाषाओं में समाधान स्वागत योग्य हैं, इसलिए हम प्रत्येक भाषा में सबसे छोटे कोड के लिए प्रयास कर सकते हैं, न कि केवल सबसे छोटे कोड के लिए।
परीक्षण के मामलों
(आपको केवल एक सत्य या मिथ्या मूल्य का उत्पादन करना होगा; नीचे दिए गए एनोटेशन स्पष्टीकरण के माध्यम से हैं।) कुछ इनपुट जो सत्य मानों को उत्पन्न करते हैं:
39 (3 divides both 3 and 9)
64 (2 divides both 6 and 4)
497 (7 divides both 49 and 7)
990 (splitting into 99 and 0 is invalid; but 9 divides both 9 and 90)
2233 (11 divides both 22 and 33)
9156 (3 divides both 9 and 156; or, 7 divides both 91 and 56)
11791 (13 divides both 117 and 91)
91015 (5 divides both 910 and 15)
1912496621 (23 divides both 1912496 and 621; some splittings are multiples of 7 as well)
9372679892 (2473 divides both 937267 and 9892; some splittings are multiples of 2 as well)
झूठा मान देने वाले कुछ इनपुट हैं:
52
61
130 (note that 13 and 0 is not a valid splitting)
691
899
2397
9029
26315
77300 (neither 7730 and 0 nor 773 and 00 are valid splittings)
2242593803
Do हां मैं वास्तव में ऐसा करता हूं