कल अपने बच्चे के साथ खेलते हुए मैंने उसकी टॉय ट्रेन में नंबर देखा:
तो हमारे पास जिन्हें या में विभाजित किया जा सकता है
इतनी सरल चुनौती: इनपुट के रूप में एक गैर-नकारात्मक संख्या को देखते हुए, लगातार सत्य और झूठे मूल्यों को लौटाएं जो यह दर्शाते हैं कि संख्या के आधार का प्रतिनिधित्व करते हैं या नहीं (आधार 10 में और प्रमुख शून्य के बिना) किसी भी संख्या में विभाजित हो सकते हैं जो 2 की शक्तियां हैं ।
उदाहरण:
4281 truthy (4-2-8-1)
164 truthy (16-4 or 1-64)
8192 truthy (the number itself is a power of 2)
81024 truthy (8-1024 or 8-1-02-4)
101 truthy (1-01)
0 falsey (0 cannot be represented as 2^x for any x)
1 truthy
3 falsey
234789 falsey
256323 falsey (we have 256 and 32 but then 3)
8132 truthy (8-1-32)
Tests for very large numbers (not really necessary to be handled by your code):
81024256641116 truthy (8-1024-256-64-1-1-16)
64512819237913 falsey
यह कोड-गोल्फ है , इसलिए प्रत्येक भाषा की जीत के लिए सबसे छोटा कोड हो सकता है!
101
(0 के कारण मिथ्या) ... या यह अभी भी सच होना चाहिए ( 1 - 01
)?
101
वर्तमान उत्तरों के साथ मामले का परीक्षण कर रहा हूं और वे सभी वापस लौट आए हैं true
, क्योंकि इसमें विभाजित किया जा सकता है 1-01
दोनों 2 की शक्तियां हैं, इसलिए मैं उस मामले को सत्य मानूंगा।
log2(n)
अल्पविराम के बाद दशमलव अंक नहीं हैं तो जांचें । 2) जांचें कि क्या n AND (n-1) == 0
। 3) वर्ग-सूची की एक सूची बनाएँ और जाँच करें कि n
क्या उस सूची में है।
int
प्रकार (4 बाइट्स) की सीमा तक इनपुट संख्या को सीमित करने के बारे में सोचा था , लेकिन वास्तव में मुझे कोई आपत्ति नहीं है यदि आपका कोड बहुत बड़ी संख्या का समर्थन नहीं करता है। बस अपने उत्तर में अपने कोड की सीमाएं बताएं।