गोल्फ दशमलव भिन्न


15

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

इनपुट के रूप में 2 पूर्णांक लें , पहला अंश है, दूसरा हर है।

उदाहरण के लिए:

n  d   output
-----  ------
0 13:  0.00
1 13:  0.07
2 13:  0.1
3 13:  0.2
4 13:  0.30
5 13:  0.38

आदि।

3/1313 के एक भाजक के साथ एकमात्र अंश है जो इसके साथ शुरू होता है 0.2, इसलिए आगे के अंकों की आवश्यकता नहीं है। 4/13और 5/13दोनों के साथ शुरू होता है 0.3, इसलिए उनके बीच अंतर करने के लिए एक और अंक की आवश्यकता होती है।

आप कर सकते हैं उत्पादन की तुलना में अधिक से अधिक -1 और कम से कम के साथ या एक शून्य दशमलव बिंदु से पहले बिना 1 नंबर, जब तक उत्पादन अनुरूप है, यानी 0.5और .5एक ही नंबर हैं और दोनों मान्य हैं। किसी अन्य प्रमुख शून्य को अनुमति नहीं है। यदि उन्हें किसी अन्य मान से आउटपुट को अलग करना आवश्यक हो, तो ट्रेलिंग शून्य दिखाया जाना चाहिए।

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

अधिक परीक्षण मान:

   n    d   output
----------  ------
   0    1:   0 (this 0 may not be removed because there's no decimal point)
   5    1:   5
   0    3:   0.0 (or .0)
   4    3:   1.3
   5    3:   1.6
  10    8:   1.2
  11    8:   1.3
  12    8:   1.5
-496  -38:  13.05
 458  -73:  -6.27
  70  106:   0.660 (or .660)
 255  123:   2.07
 256 -123:  -2.081
-257 -123:   2.089
-258  123:  -2.09
 258 -152:  -1.697
-259  152:  -1.70
 260  152:   1.710
 272  195:   1.39
 380  247:   1.538
 455 -455:  -1.000
 -44  891:  -0.049 (or -.049)
 123 1234:   0.099 (or .099)

प्रत्येक मामले में, आउटपुट और भाजक संख्यात्मक रूप से विशिष्ट रूप से कार्य करने के लिए पर्याप्त हैं।

जवाबों:


1

पर्ल, 77 बाइट्स

#!perl -p
$%++while/ /<grep{!index$_/$',$\=$`/$'.($`%$'?0:n).0 x$%&'?'x$%}$`-2..$`+2}{

शेबबैंग को एक के रूप में गिना जाता है, इनपुट को स्टड से लिया जाता है।

नमूना उपयोग

$ echo 0 3 | perl golf-decimals.pl
0.0

$ echo 4 3 | perl golf-decimals.pl
1.3

$ echo 11 8 | perl golf-decimals.pl
1.3

$ echo -496 -38 | perl golf-decimals.pl
13.05

$ echo 458 -73 | perl golf-decimals.pl
-6.27

$ echo -44 891 | perl golf-decimals.pl
-0.049

1

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

AQJ+`cGHK*20\0<Jf!}<JTm<+`dKTcRH,tGhG

एक प्रोग्राम जो फॉर्म में इनपुट लेता है numerator,denominatorऔर परिणाम प्रिंट करता है।

परीक्षण सूट

[स्पष्टीकरण बाद में आ रहा है]


1

जावास्क्रिप्ट (ईएस 7), 118 93 90 बाइट्स

f=(a,b,i=0)=>(v=(p=n=>((n/b*10**i|0)/10**i).toFixed(i))(a))==p(a+1)|v==p(a-1)?f(a,b,i+1):v

मैंने @ बाइल की बदौलत 25 बाइट्स बचाए।
पुनरावृत्ति का उपयोग करके अतिरिक्त 3 बाइट्स सहेजे गए।


2
तुम हमेशा से पारित /bऔर iकरने के लिए pआप ऐसा कर सकते हैं और साथ ही उन्हें अंदर कोड pही है और बस एक ही पैरामीटर ले। इसके अलावा जवाब सिर्फ nइतना है कि आपको इसे फिर से गणना करने की आवश्यकता नहीं है। मैं एक पुनरावर्ती ES6 संस्करण केवल 86 बाइट्स पर इस पर आधारित है ...
नील
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.