সংখ্যা সংক্ষিপ্ত করতে অক্ষর ব্যবহার করুন


9

চ্যালেঞ্জ

একটি সংখ্যা নিন এবং এটিকে 4 ডিজিট বা তার চেয়ে কম অক্ষর এবং সংখ্যা ব্যবহার করে ফলাফল দিন। উদাহরণ স্বরূপ; 270,030মধ্যে পরিণত হবে 270K

মূল

বিলিয়ন -> B

মিলিয়ন -> M

হাজার -> K

বিধি

  • আপনি ইনপুট নম্বরগুলি গ্রহণ করতে বেছে নিতে পারেন যা প্রতি তিন দশমিক জায়গায় (যেমন 123,456,789) কমা বিস্মৃত অন্তর্ভুক্ত ।
  • নিকটতম গোল, অর্ধ আপ।
  • সংখ্যাগুলি কেবল উপরে চলে যাবে 999,499,999,999
  • উত্তরের মান্টিস অংশটি কমপক্ষে 1 হওয়া উচিত।
  • সমস্ত বর্ণগুলি অবশ্যই বড় হাতের এবং উপরে বর্ণিত হিসাবে বর্ণিত হবে।
  • আউটপুটগুলি 4 বা তার চেয়ে কম সংখ্যার হতে হবে। (যেমন , এবং B, সহ চিঠিগুলি সহ )KM
  • ফলাফলগুলি গাণিতিকভাবে যথাসম্ভব নির্ভুল হতে হবে be উদাহরণ:
    • 15,480-> 20K ঠিক আছে না
    • 15,480-> 15.5K ভাল
  • যদি একই গাণিতিক নির্ভুলতার সাথে একাধিক আউটপুট থাকে তবে যে কোনও একটি ফেরত দিন। উদাহরণ:
    • 1000-> 1000 ভাল
    • 1000-> 1K ভাল

উদাহরণ:

1,234,567 -> 1.23 এম
999,500 -> 1 এম
999,499 -> 999 কে
102 -> 102
1000 -> 1 কে
1001 -> 1001
100,000 -> 100 কে
12,345,678,912 -> 12.3 বি
1,452,815,612 -> 1.45 বি

জমা

উত্তর:


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.5 মিটার হওয়া উচিত, বা নাও, আলগা অনুমানের ভিত্তিতে অনিশ্চিত হওয়া উচিত।
যাদু অক্টোপাস উরন

মনে রাখবেন আপনার ট্রিলিয়ন পর্যন্ত সহায়তা করা দরকার।
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]
রাইমাগ করুন

1
@ জোনাথান অ্যালান কিছুই নেই আমার ভুল.
আর্টিয়ার 21

@ অরস্লাহ আমি সেই পরিবর্তনটি করেছি তবে 999499 -> 999M বাগ ঠিক করার সময় এটি রাখতে পারিনি।
গ্যারেথপিডাব্লু

1

জাভাস্ক্রিপ্ট (ES7), 74 বাইট

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

জাভাস্ক্রিপ্ট (ES6), 80 বাইট

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.