प्रत्येक परिमेय संख्या के दशमलव प्रतिनिधित्व में p/q
, आपके पास एक आवधिक पूंछ, एक गैर-आवधिक सिर और निम्नलिखित प्रारूप में दशमलव बिंदु से पहले एक अनुभाग है:
(before decimal point).(non-periodic)(periodic)
कुछ उदाहरणों में शामिल हैं:
1/70 = 0.0142857... = (0).(0)(142857)
10/7 = 1.428571... = (1).()(428571) ## no non-periodic part
1/13 = 0.076923... = (0).()(076923)
3/40 = 0.075 = (0).(075)() ## no periodic part
-2/15 = -0.13... = -(0).(1)(3) ## negative
75/38 = 1.9736842105263157894... = (1).(9)(736842105263157894)
## periodic part longer than float can handle
25/168 = 0.148809523... = (0).(148)(809523)
120/99 = 40/33 = 1.212121... = (1).()(21)
2/1 = 2 = (2).()() ## no periodic, no non-periodic
0/1 = 0 = (0).()()
0/2 = 0 = (0).()()
299/792 = 0.37752... = (0).(377)(52)
95/-14 = -6.7857142... = -(6).(7)(857142)
-95/-14 = 6.7857142... = (6).(7)(857142)
आवधिक और गैर आवधिक भागों की अदला-बदली करने की चुनौती है before decimal point
, एक नया नंबर बनाने के लिए अकेले छोड़ देना । उदाहरण के लिए:
25/168 = 0.148809523... = (0).(148)(809523)
=> (0).(809523)(148) = 0.809523148148... = 870397/1080000
यदि किसी संख्या में कोई आवधिक भाग नहीं है, तो 0.25
उस संख्या को एक नई आवधिक संख्या में बदल दें, और इसके विपरीत।
1/4 = 0.25 = (0).(25)() => (0).()(25) = 0.252525... = 25/99
4/9 = 0.444444... = (0).()(4) => (0).(4)() = 0.4 = 2/5
5/1 = 5 = (5).()() => (5).()() = 5 = 5/1
चुनौती
x
इनपुट के रूप में एक अंश लें , एक स्ट्रिंग के रूप में, दो इनपुट, एक परिमेय संख्या, या जो भी विधि आपकी भाषा के अनुरूप है।x
एक नई संख्या बनाने के लिए दशमलव के आवधिक और गैर-आवधिक भागों को स्वैप करें , अकेले दशमलव से पहले भाग छोड़ दें। आवधिक भाग हमेशा जल्द से जल्द शुरू होता है ताकि गैर-आवधिक भाग यथासंभव कम हो। उदाहरण नीचे हैं।- एक नए अंश के रूप में स्वैप की गई संख्या लौटाएं। इनपुट आवश्यक रूप से कम नहीं है हालांकि आउटपुट होना चाहिए। इनपुट प्रारूप को आउटपुट प्रारूप से भिन्न करने की अनुमति है।
- अंश
p
कीx
और एक लाख या उससे कम का निरपेक्ष मान विभाजक के साथ एक पूर्णांक हो जाएगाq
कीx
एक हो जाएगा गैर शून्य दस लाख या उससे कम का निरपेक्ष मान के साथ पूर्णांक। - परिणाम का अंश
r
और भाजकs
एक मिलियन से कम होने की गारंटी नहीं है। इन नंबरों के आवधिक भागों की लंबाई को देखते हुए, यह अनुशंसा की जाती है कि आप सीधे फ्लोट में परिवर्तित होने से बचें। - यह कोड गोल्फ है। बाइट्स जीत में सबसे छोटा जवाब।
उदाहरण
1/70 = (0).(0)(142857) => (0).(142857)(0) = (0).(142857)() = 0.142857 = 142857/1000000
10/7 = (1).()(428571) => (1).(428571)() = 1.428571 = 1428571/1000000
1/13 = (0).()(076923) => (0).(076923)() = 0.076293 = 76923/1000000
3/40 = (0).(075)() => (0).()(075) = 0.075075... = 75/999 = 25/333
-2/15 = -(0).(1)(3) => -(0).(3)(1) = -0.311111... = -28/90 = -14/45
75/38 = (1).(9)(736842105263157894)
=> (1).(736842105263157894)(9) = (1).(736842105263157895)() ## since 0.999... = 1
= 1.736842105263157895 = 1736842105263157895/1000000000000000000
= 347368421052631579/200000000000000000
25/168 = (0).(148)(809523) => (0).(809523)(148) = 0.809523148148... = 870397/1080000
120/99 = (1).()(21) => (1).(21)() = 1.21 = 121/100
2/1 = (2).()() => (2).()() = 2 = 2/1
0/1 = (0).()() => (0).()() = 0 = 0/1
0/2 = (0).()() => (0).()() = 0 = 0/1
299/792 = (0).(377)(52) => (0).(52)(377) = 0.52377377... = 2093/3996
95/-14 = -(6).(7)(857142) => -(6).(857142)(7) = -6.857142777... = -12342857/1800000
-95/-14 = (6).(7)(857142) => (6).(857142)(7) = 6.857142777... = 12342857/1800000
1/7
के रूप में प्रतिनिधित्व किया जा सकता है (0).()(142857)
या (0).(1)(428571)
, 1
निरूपित किया जा सकता के रूप में (1).()()
, (0).()(9)
, (0).()(99)
, (0).(9)(9)
, आदि
0
परीक्षण के मामले के अंत में एक लापता है 2 (10/7
):1428571/100000
होना चाहिए1428571/1000000
।