संख्याओं को कम करने के लिए अक्षरों का उपयोग करें


9

चुनौती

एक संख्या लें और इसे 4 अंकों या कम अक्षरों और संख्याओं का उपयोग करके आउटपुट करें। उदाहरण के लिए; 270,030में बदल जाएगा 270K

चाभी

अरब -> B

मिलियन -> M

हजार -> K

नियम

  • आप उन इनपुट नंबरों को स्वीकार करने का विकल्प चुन सकते हैं जिनमें हर तीन दशमलव स्थानों (जैसे 123,456,789) पर अल्पविरामों का परिसीमन शामिल है ।
  • राउंड टू निकटतम, हाफ-अप।
  • संख्या केवल ऊपर तक जाएगी 999,499,999,999
  • उत्तर का मंटिसा भाग कम से कम 1 होना चाहिए।
  • सभी पत्र ऊपर से और ऊपर बताए अनुसार होने चाहिए।
  • आउटपुट 4 या उससे कम अंक का होना चाहिए। (जैसे पत्र सहित B, Kहै, और M)
  • आउटपुट गणितीय रूप से यथासंभव सटीक होना चाहिए। उदाहरण:
    • 15,480-> 20K ठीक नहीं है
    • 15,480-> 15.5K अच्छा है
  • यदि एक ही गणितीय परिशुद्धता के साथ कई आउटपुट हैं, तो दोनों में से किसी एक को वापस करें। उदाहरण:
    • 1000-> 1000 अच्छा है
    • 1000-> 1K अच्छा है

उदाहरण:

1,234,567 -> 1.23 एम
999,500 -> 1M
999,499 -> 999K
102 -> 102
1000 -> 1 कि
1001 -> 1001
100,000 -> 100K
12,345,678,912 -> 12.3 बी
1,452,815,612 -> 1.45B

प्रस्तुतियाँ

जवाबों:


2

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

i=>{I=i;for(x=-1;i>=999.5;x++)i/=1e3;return I<1e4?I:+i.toPrecision(3)+'KMB'[x]}

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

(संख्या के रूप में इनपुट्स लेता है)

विशेष मामलों में पहले एक जहां i < 1000, यदि , संख्या ही हमेशा सबसे छोटे तरीकों में से एक है, यदि एकमात्र सबसे छोटा तरीका नहीं है।

अन्यथा, यह इसे 1000 तक विभाजित करता है जब तक कि इसे विभाजित करने से यह 1 से ऊपर कोई महत्वपूर्ण आंकड़े नहीं होगा, और कितने विभाजनों के आधार पर एक प्रत्यय चुनता है।


आखिरी मामला 999.5M होना चाहिए, या शायद नहीं, ढीली कल्पना के आधार पर अनिश्चित।
मैजिक ऑक्टोपस Urn

याद रखें कि आपको एक ट्रिलियन तक का समर्थन करने की आवश्यकता है।
गारेथपॉ जूल

@GarethPW कल्पना के अनुसार 999,499,999,999 से ऊपर की संख्या का प्रतिनिधित्व करने का कोई तरीका नहीं है ( T -> trillionकुंजी में नहीं ), इसलिए मैंने मान लिया कि यह ऊपरी सीमा थी। मैं पूछता हूँ, लेकिन यह एक बाइट हानि अन्यथा है।
एरिट

1

पायथन 3 , 127 बाइट्स

def f(n):s=str(n);l=len(s)-4;return f"{round(n,~l):,}"[:4].replace(*",.").rstrip('.')+"KMBT"[l//3+(int(s[3])>4)]if n>9999else n

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


थोड़ा छोटा:def f(n):l=len(str(n))-4;return[n,f"{round(n,~l):,}"[:4].replace(*",.").rstrip('.')+"KMBT"[-~l//3]][n>9999]
wmmug

1
@ जोनाथनअलन नथिंग। मेरी गलती।
एरियर

@rosslh मैंने उस परिवर्तन को किया, लेकिन 999499 -> 999M बग को ठीक करते समय इसे रख नहीं सका।
गारेथपब्लू

1

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

n=>n<1e4?n:(c=n.toExponential(2).split`e`).shift()*10**(c%3)+' KMB'[c/3|0]

जावास्क्रिप्ट (ईएस 6), 80 बाइट्स

n=>n<1e4?n:(c=n.toExponential(2).split`e`).shift()*[1,10,100][c%3]+' KMB'[c/3|0]

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