एक शून्य की तरह गोल


12

लक्ष्य

एक इनपुट नंबर को देखते हुए, इसे एक महत्वपूर्ण आकृति के साथ निकटतम संख्या में गोल करें।

आवश्यकताएँ

इनपुट

  • एक फ्लोटिंग पॉइंट नंबर।
  • डेटा प्रकार की सीमाओं के भीतर एक आउटपुट में इनपुट संख्या के परिणाम को मान लें (यानी ओवरफ़्लो त्रुटियों को अनदेखा करें।)
  • 0 एक अमान्य इनपुट है।
  • फ़्लोटिंग पॉइंट डेटा प्रकार (उदाहरण के "0.35"लिए संग्रहीत किया जा रहा है 0.3499999) का सही समर्थन नहीं किया जा सकता है कि संख्या।

उत्पादन

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

प्रस्तुतीकरण

प्रस्तुति की बजाय गणना पर ध्यान दिया जाता है। आउटपुट एक फ्लोटिंग पॉइंट डेटा प्रकार हो सकता है। यह पूर्ण रूप से या वैज्ञानिक संकेतन में पाठ हो सकता है। यदि आप एक खामी पाते हैं, जहां एक निश्चित तरीके से पेश करने से आपकी बाइट की संख्या कम हो जाती है, तो आपके लिए यश!

उदाहरण

9
-3000
.2
0.2
-.2
7e12
5e-15
1e0

परीक्षण के मामलों

Input     Output
1         1
10        10
17        20
99        100
54321     50000
56789     60000
-123      -100
-789      -800
0.23      0.2
0.25      0.3
-0.25     -0.3
4.56e23   5e23
4.56e-23  5e-23

स्कोरिंग

एक सप्ताह के बाद कम से कम बाइट-काउंट वाला कोड जीत जाता है।


3
मुझे लगता है कि "एक महत्वपूर्ण आंकड़ा" वह वाक्यांश है जिसे आप ढूंढ रहे हैं।
स्टीव बेनेट

2
0 के लिए गोलाई नियम बहुत अजीब है।
xnor

2
@xnor, आप सही कह रहे हैं। 0 1 से 0.0001 के करीब है। मुझे लगता है कि 0 को बस अमान्य होना चाहिए।
हाथ-ई-फूड

1
हाँ, और यह लक्ष्य कथन से मेल नहीं खाता है।
स्टीव बेनेट

जवाबों:


6

MATL , 3 बाइट्स

1&V

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें

0.25TIO पर ऑक्टेव में चल रहे कंपाइलर के लिए टेस्ट केस फेल है, लेकिन विंडोज पर मैटलैब में काम करता है:

यहाँ छवि विवरण दर्ज करें

अलग-अलग व्यवहार ऑक्टेव के / मैटलैब के sprintfफ़ंक्शन के कारण होता है, जो कि "बैंकर की गोलाई" या ".5 का उपयोग करता है। शून्य" गोलाई से दूर, प्लेटफ़ॉर्म पर निर्भर करता है। अधिक जानकारी और परीक्षण यहां देखे जा सकते हैं


के लिए 6 बाइट्स ,

1t3$Yo

ऑक्टेव और मतलाब दोनों पर काम करता है। सभी परीक्षण मामलों की जाँच करें


1
"बैंकर की गोलाई" बहुत ज्यादा है जिसने मुझे मेरे जेली उत्तर को हटा दिया। > _ <
निकोलफर जूल

@EriktheOutgolfer हां, मुझे लगा कि इसका कारण भी यही था। मैं खुशकिस्मत हूं कि मतलाब ऐसा नहीं करता::
लुइस मेंडो


9

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

x=>x.toPrecision(1)

यह 0या पर विनिर्देश को संतुष्ट नहीं करता है 25
एंडर्स कासोर्ग

दिलचस्प। 0मेरे लिए कल्पना का कोई मतलब नहीं है। लेकिन 0.35बात यह है ... लगता है कि जावास्क्रिप्ट गोलाई में पूर्वाग्रह से बचने की कोशिश कर रहा है, लेकिन कल्पना पूर्वाग्रह चाहती है।
स्टीव बेनेट

अरे, आपने अपनी टिप्पणी बदल दी - आपने पहले 0.35नहीं लिखा था 25। मुझे लगता है कि यह 25 के लिए कल्पना को पूरा करता है - यह "3e + 1" देता है जो मुझे सही लगता है।
स्टीव बेनेट

क्षमा करें, मैंने इसे 0.35इसलिए बदल दिया क्योंकि 0.35इसमें कोई सटीक फ़्लोटिंग-पॉइंट प्रतिनिधित्व नहीं है। व्यवहार ब्राउज़र-निर्भर होना चाहिए; मैं 252e+1फ़ायरफ़ॉक्स में।
एंडर्स कासोर्ग

हाँ, मुझे क्रोम बनाम फ़ायरफ़ॉक्स में उन दो अलग-अलग परिणाम मिलते हैं। वाह।
स्टीव बेनेट

4

रेटिना , 63 62 बाइट्स

1`[1-9]
$*#
#\.?[5-9]
#$&
T`d`0`#[\d.]+
0(\.?)#{10}
1$1
#+
$.0

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


जाहिरा तौर पर आपको शून्य के पीछे जाने के बारे में चिंता करने की ज़रूरत नहीं है ताकि आप अंतिम चरण को पूरी तरह से हटा सकें (हालांकि मैं इससे प्रभावित हूं, यह हर दिन नहीं है जब आप चार वर्णों के स्थान में तीन प्रश्न चिह्न देखते हैं)।
नील

दुर्भाग्य से यह उत्तर विफल होता दिखाई दे रहा है 0.99
नील

0.099आदि के लिए भी विफल रहता है : एक प्रयास में मेरा प्रयास: यह ऑनलाइन कोशिश करो!
नील

इसके लिए भी विफल रहता है 99.99, 100.001...
नील

फिर भी गलत है 0.099, क्षमा करें। उज्ज्वल पक्ष पर मुझे लगता है कि आप तीसरी पंक्ति के +बाद हटा सकते हैं ;
नील

2

PHP , 45 बाइट्स

<?=round($x=$argv[1],-floor(log10(abs($x))));

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

मेरे अजगर 2 जवाब के रूप में एक ही विधि।

सही ढंग से संभाल करने के लिए भी लगता है 0.35, जो इसे जेएस जवाब के ऊपर एक खूंटी भी डालता है: डी


दिलचस्प बात यह है कि मैं अपने हटाए गए अजगर 3 जवाब अजगर 2 में काम कर सकते हैं लगता है
ऐन्डर्स Kaseorg

परीक्षण किया है, और यह करता है! पायथन के उत्तर को संपादित और
अनिर्धारित किया गया

2

टी-एसक्यूएल, 27 बाइट्स

SELECT FORMAT(i,'G1')FROM t

कार्लोस अलेजो के C # उत्तर के समान .Net फॉर्मेटिंग कोड का उपयोग करना । इनपुट हमारे मौजूदा मानकों के अनुसार , पहले से मौजूद टेबल टी में फ्लोट कॉलम i से है

परीक्षण के मामलों:

Input         Output
------------ --------
1             1
10            1E+01
17            2E+01
99            1E+02
54321         5E+04
56789         6E+04
-123         -1E+02
-789         -8E+02
0.23          0.2
0.25          0.3
-0.25        -0.3
4.56E+23      5E+23
4.56E-23      5E-23

(बहुत आसान है कि मैं इन सभी मूल्यों के साथ इनपुट तालिका को पूर्व-लोड कर सकता हूं और उन्हें एक ही बार में चला सकता हूं।)


1

पायथन 2 , 62 बाइट्स

lambda x:round(x,-int(floor(log10(abs(x)))))
from math import*

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

अजगर गोल्फिंग के लिए उपयोग नहीं किया जाता है, लेकिन यह काम करता है।

0.35फ्लोटिंग पॉइंट की अशुद्धि के कारण विफल रहता है।

यह इंगित करने के लिए एंडर्स कसेगोर का धन्यवाद कि यह पायथन 2 में सही ढंग से काम करता है


के लिए आउटपुट 0.25माना जाता है 0.3
एंडर्स कासोर्ग

@AndersKaseorg मुझे यकीन नहीं है कि क्यों, लेकिन मैं केवल यह मान सकता हूं कि यह एक ही फ़्लोटिंग-पॉइंट अशुद्धि के कारण जावास्क्रिप्ट उत्तर के रूप में है।
स्काइड्सदेव

हम्म प्रतीक्षा 25 में एक ही समस्या है ... अजीब।
स्काइड्सदेव

किसी के लिए भी, पायथन 2 का roundदौर शून्य से दूर है, जबकि पायथन 3 का दौर यहां तक ​​कि, यही कारण है कि यह Py2 में काम करता है, लेकिन 3. नहीं
जूल

आप के log(x,10)बजाय का उपयोग कर कुछ बाइट्स गोल्फ कर सकते हैं log10(abs(x))
एलिक्स ईसेनहार्ट


1

एक्सेल, 14 बाइट्स

=ROUNDUP(A1,1)

साइट पर आपका स्वागत है! यह एक अच्छा पहला उत्तर है, क्या आपके पास कहीं से कोई लिंक है जिसे यह परीक्षण किया जा सकता है, अधिमानतः ऑनलाइन, ताकि अन्य उपयोगकर्ताओं को एक्सेल डाउनलोड न करना पड़े?
caird coinheringaahing

दुर्भाग्य से मुझे नहीं लगता कि लाइसेंस के कारण कोई भी मुफ्त Microsoft साइटें हैं, क्षमा करें। मैंने कोड गोल्फ पर अन्य एक्सेल उत्तर देखे हैं, लेकिन मुझे यकीन नहीं है कि मैं नए होने के बाद से कैसे मान्य हूं!
rew

यह परीक्षण के अधिकांश मामलों के लिए काम नहीं करता है। यह "दशम" स्थिति तक चक्कर लगा रहा है। जो भी सबसे महत्वपूर्ण स्थिति है उसे राउंड (अप नहीं) करना होगा।
हाथ-ई-फूड



0

फोर्थ (gforth) , 24 बाइट्स

: f 1 set-precision f. ;

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

फ्लोटिंग पॉइंट स्टैक पर इनपुट अपेक्षित है। आउटपुट को रोकना है

मुझे फ़्लोटिंग पॉइंट आउटपुट फ़ंक्शंस की वैश्विक (इस उदाहरण के लिए) सटीकता में बदलाव करना पसंद नहीं है, लेकिन यह बहुत सारे बाइट्स को बचाता है ताकि अंत में पिछले मूल्य को पुनर्स्थापित न करना पड़े। इनपुट की परवाह किए बिना इंजीनियरिंग या वैज्ञानिक संकेतन में उत्पादन नहीं करता है।

नोट: किसी कारण से, टायो दुभाषिया में परिवर्तित हो 0.25जाता है 0.2, जबकि मेरी स्थानीय स्थापना में परिवर्तित 0.25हो जाती है 0.3। मुझे पूरी तरह से यकीन नहीं है कि ऐसा क्यों है, लेकिन चूंकि मुझे स्थानीय रूप से सही परिणाम मिलता है, इसलिए मैं अपना उत्तर छोड़ रहा हूं

: f                   \ start a new word definition
  1 set-precision     \ set the floating point output words to use 1 significant digit
  f.                  \ output the top of the floating point stack
;                     \ end the word definition
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.