गोलाई में 1 जोड़ने से पहले मुझे कितने डेसीमल होने चाहिए?


10

जब आप एक नंबर राउंड करते हैं, अगर अगला अंक >= 5आप जोड़ते हैं 1. उदाहरण के लिए:

3.1415926535 rounded to 1dp is 3.1
3.1415926535 rounded to 4dp is 3.1416    <-- Note the 5 changed to 6
3.1415926535 rounded to 5dp is 3.14159

3.1415926535 rounded to 9dp is 3.141592654  <-- Note the 3 changed to 4

आप चुनौती देते हैं कि एक पूर्णांक को इनपुट के रूप में प्राप्त करें और दशमलव स्थानों की संख्या को आउटपुट करें, जिसके पहले आपको संख्या के वर्गमूल को राउंड करना होगा - अर्थात एम्बर अंक से पहले दशमलव स्थानों की संख्या जो >= 5होती है।

पूर्णांक 0 और 100,000 के बीच होगा, इसलिए 59752 के किनारे के मामले के लिए आपको 17 दशमलव बिंदुओं (17 वें की जांच करने के लिए) का समर्थन करने की आवश्यकता है।

यदि आप प्रोग्रामिंग भाषा में दशमलव बिंदुओं की संख्या नहीं बदल सकते हैं, तो आप "?" उपयोगकर्ता को संदेश।

उदाहरण:

Input    Root                     Output

    5 -> 2.23 606797749979     -> 2
   41 -> 6.40312423 743284     -> 8      (Largest gap under 100)
  596 -> 24.4131112314 674     -> 10     (Largest gap under 1000)
59752 -> 244.44222221212112029 -> 16     (Largest gap under 100000)

आप जो चाहते हैं, उसे सही वर्गों पर करें।

यह इसलिए सबसे छोटा कोड जीतता है।


रुचि रखने वाले किसी भी व्यक्ति के लिए, संख्या 310,617 1,000,000 के तहत सबसे बड़ी है और आपके पास एक अंक तक पहुंचने से पहले 18 है >= 5


हमें अधिकतम कितने दशमलव स्थानों का समर्थन करने की आवश्यकता है? - अनंत परिशुद्धता के लिए कोई भाषा नहीं है।
ब्लू

पता नहीं क्यों, लेकिन मुझे SQRT (59752) (दो अलग-अलग भाषाओं में) के लिए 17 अंक मिलते हैं। अन्य परिणाम ठीक से सामने आते हैं।
जोनाथन लीच-पेपिन

@ JonathanLeech-Pepin आप किसी कारण से अंतिम अंक सहित हैं? या आपका प्रोग्राम पर्याप्त दशमलव स्थानों का समर्थन नहीं करता है।
टिम

इसका अंक कभी भी 5 से बड़ा नहीं होता है। उदाहरण के लिए मेरा कार्यक्रम
ब्लू

@ मुडफिश जो ठीक है।
टिम

जवाबों:



2

पायथ, 13 बाइट्स

f<5e@=*QC\d2Z

परीक्षण सूट

Qइनपुट के बराबर से शुरू करें । प्रत्येक समय कदम पर, Q100 से गुणा करें , जैसा कि गणना की जाती है chr('d')। इसकी चौकोर जड़ लें। इस मोड को ले लो 10. यदि परिणाम से अधिक है 5, तो समाप्त करें। 0-अनुक्रमित को समाप्त करने के लिए किए गए पुनरावृत्तियों की संख्या प्रिंट करें।

विस्तार से:

f<5e@=*QC\d2Z
                   Q = eval(input())
f           Z      Filter for the first truthy result over the infinite sequence
                   starting at Z (= 0)
     =*Q           Q *=
        C\d             chr('d') (= 100)
                   ---------------------
    @  Q   2          Q ^ (1/2)
   e                            % 10
 <5               5 <

1

सीजेएम, 29 26 28 बाइट्स

rimqs_'.+'.#)>{'5<}%0#]W'?er

इसे ऑनलाइन आज़माएं।

डालता है एक "?" यदि संख्या दिखाई नहीं देती है, तो इसे गोल (पूर्ण वर्ग या बहुत लंबा) किया जा सकता है।


1

पायथ, 22 बाइट्स

J`%@Q2 1x.e<\4@Jbr2lJ1

व्याख्या

                       - Autoassign Q to evaluated input
   @Q2                 - Get the square root of Q
J`%    1               - Get the stuff after the decimal point and put it in a string. Store in J
         .e      r2lJ  - Create a range between 2 and the length of the string (forget about the 0. bit) and enumerate over it
              @Jb      - Get the current decimal place
           <\4         - Is it bigger than 4
        x            1 - Find the position of the first True value

मुझे पूरा यकीन है कि यह गोल्फ हो सकता है। यदि इनपुट में 4 से अधिक अंक नहीं है, तो यह -1 प्रिंट करेगा। 17dp का समर्थन करता है।


1

जावास्क्रिप्ट, 59 बाइट्स

f=a=>(a=/\.(.*?)[5-9]/.exec(Math.sqrt(a)),a?a[1].length:'?')

?59752 के लिए रिटर्न क्योंकि जावास्क्रिप्ट केवल डबल परिशुद्धता का उपयोग करता है।


1

लिनक्स शेल, 52 बाइट्स

dc -e'34k?vp'|cut -d. -f2|sed 's/.[5-9\s].*//'|wc -m

मैंने एक शुद्ध dcसमाधान के लिए प्रयास किया , लेकिन असफल रहा। परिशुद्धता समायोज्य (पहली संख्या) है।

जैसा कि ओपी कृपया निर्दिष्ट करता है कि "आप वह कर सकते हैं जो आप सही वर्गों पर चाहते हैं", इस मामले में यह समाधान इस मामले में सटीक + 1 का उत्पादन करता है, 35।


1

गणितज्ञ 60 बाइट्स

(Position[Drop@@RealDigits[N[Sqrt@#,99]],x_/;x>4][[1,1]]-1)&

उदाहरण

(Position[Drop@@RealDigits[N[Sqrt@#, 99]], x_ /; x > 4][[1, 1]] - 1) &[59752]

16


आप आसपास के व्हाट्सएप को हटा सकते हैं Apply
लेजिओनमाला 978

धन्यवाद। बाइट काउंट वही रहता है क्योंकि मैंने उन स्पेस को नहीं गिना था।
डेविड नोव

-2

रूबी, 46 बाइट्स

यह मान्य नहीं हो सकता है, क्योंकि यह केवल 16 अंकों में फिट बैठता है।

p (gets.to_i**0.5).to_s.split('.')[1]=~/[5-9]/

59752 पर आउटपुट क्या है?
टिम

nil, क्योंकि कोई भी अंक पिछले 4 पूरे स्ट्रिंग में नहीं है। यह माणिक संस्करण पर निर्भर हो सकता है।
मेगाटॉम

उसे 59752 का समर्थन करने की आवश्यकता है
टिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.