আপনি একটি কোম্পানী একটি ব্যবহারকারী বান্ধব ক্যালকুলেটর করতে চাইছে যে জন্য কাজ, এবং এইভাবে আপনি ব্যবহারকারীদের "সংখ্যাসূচক shorthands 'অর্থাৎ, অক্ষর যে যেমন সংখ্যাসূচক মান, প্রতিনিধিত্ব ব্যবহার করার জন্য ক্ষমতা যোগ সঙ্গে tasked হয়েছে kজন্য 1000। আপনার সংস্থাটি ক্যালকুলেটরগুলিতে স্টোরেজে অর্থ সঞ্চয় করতে চায় বলে স্টোরেজের ব্যয় হ্রাস করতে আপনার কোডটি যথাসম্ভব কমিয়ে আনতে হবে।
তোমার কাজ
আপনাকে এমন একটি ফাংশন তৈরি করতে হবে যা হয় হয় STDIN থেকে ইনপুট হিসাবে কোনও এক্সপ্রেশনটি পড়ে বা এটি একটি প্যারামিটার হিসাবে গ্রহণ করে এবং তার মূল্যায়ন ফেরত দেয় বা এটি STDOUT এ প্রিন্ট করে।
কিছু স্পষ্টতা
আমাকে কিছু সংজ্ঞা দেওয়া যাক। প্রথম বন্ধ, আমাদের ইনপুট আছে, যা আমি একটি এক্সপ্রেশন কল। এটি নিম্নলিখিতগুলির মতো কিছু হতে পারে:
x + y / z
এই মত প্রকাশের মধ্যে আমরা তিন নম্বর আছে: x, y, এবং z, অপারেটর (দ্বারা পৃথক +এবং /)। এই সংখ্যাগুলি ইতিবাচক পূর্ণসংখ্যার (বা এমনকি পূর্ণসংখ্যার) নয়। জিনিসগুলিকে কী জটিল করে তোলে তা হ'ল যখন আমাদের সংখ্যার মধ্যে থাকা সংক্ষিপ্তসারগুলি মূল্যায়ন করতে হবে। উদাহরণস্বরূপ, সাথে
2k15
মূল্যায়ন উদ্দেশ্যে, আমরা এই তিন নম্বর মধ্যে আপ বিভক্ত: 2, 1000(যা k), এবং 15। তারপরে, নিয়ম অনুসারে, আমরা সেগুলি সংগ্রহের জন্য তাদের একত্রিত করি
2*1000 + 15 = 2015
আশা করি নিম্নলিখিত নিয়মগুলি বুঝতে এটি কিছুটা সহজ করে তোলে।
বিধি
এনবি অন্যথায় নির্দিষ্ট না করাতে আপনি শর্টহ্যান্ডগুলি অন্তর্ভুক্ত করতে "সংখ্যা" শব্দ বা এর সমার্থক শব্দটির ব্যাখ্যা করতে পারেন।
নিম্নলিখিত সংখ্যাসূচক shorthands আপনার ফাংশন প্রক্রিয়া করতে সক্ষম হতে হবে গঠন:
k, m, b, t, and e। যথাক্রমেk, m, b, and tমানগুলির সাথে1000, 1000000, 1000000000, and 1000000000000মিল (এক হাজার, এক মিলিয়ন, এক বিলিয়ন এবং এক ট্রিলিয়ন)।eসাধারণভাবে সংক্ষেপে সবসময় অন্য একটি নম্বর দ্বারা অনুসরণ করা হবেn, এবং প্রতিনিধিত্ব করে10^n। আপনাকে অবশ্যই সংখ্যার শর্টহ্যান্ডগুলি উপস্থিতnএবং আগে উপস্থিত থাকতে হবেe। উদাহরণস্বরূপ,kekমূল্যায়ন1000*10^1000।সরলতার জন্য, যদি কোনও সংখ্যার মধ্যে শর্টহ্যান্ড
eথাকে তবে এটি কেবল একবার ব্যবহার করা হবে।শর্টহ্যান্ড এর দ্বারা বহুগুণ হওয়ার আগে যে কোনও সংখ্যা ( শর্টহ্যান্ডস অন্তর্ভুক্ত )। যেমন
120kkহিসাবে মূল্যায়ন করা হবে120 * 1000 * 1000। যদি এর আগে কোনও সংখ্যা না থাকে তবে আপনাকে অবশ্যই ধরে নিতে হবে যে সংখ্যাটি 1 (যেমন আপনি কীভাবে গণিতের ক্ষেত্রে কোনও পরিবর্তনশীলকেxস্পষ্টভাবে আচরণ করতে পারেন1x)। যেমনe10মূল্যায়ন10^10। আর একটি উদাহরণ:2m2kমূল্যায়ন2*1000000*2*1000(এতে কোনও কিছুই যুক্ত হয় না)।শর্টহ্যান্ড যুক্ত সংখ্যায় শেষ শর্টহ্যান্ডের পরে যে কোনও সংখ্যা (শর্টহ্যান্ডগুলি প্রয়োগ হয় না) এতে যুক্ত হয়। যেমন
2k12হিসাবে মূল্যায়ন করা হবে2*1000 + 12। এর ব্যতিক্রম হ'ল শর্টহ্যান্ডeব্যবহার করা হয়, সেক্ষেত্রে নিম্নলিখিত সংখ্যার ( শর্টহ্যান্ডস অন্তর্ভুক্ত )eহিসাবে বিবেচনা করা হবেnএবং10^n(প্রথম নিয়মটি দেখুন) হিসাবে মূল্যায়ন করা হবে ।আপনার ফাংশনটি অবশ্যই অপারেটরগুলিকে প্রক্রিয়া করতে সক্ষম হবে
+, -, *, and /যা যথাক্রমে সংযোজন, বিয়োগ, গুণ এবং বিভাগ। আপনি যদি ইচ্ছা করেন তবে এটি আরও প্রক্রিয়াজাত করতে পারে।শর্টহ্যান্ডের সংখ্যাগুলি কেবল পূর্ণসংখ্যা নয়।
3.5b1.2বৈধ এবং হিসাবে মূল্যায়ন করা হয়3.5*1000000000 + 1.2 = 3500000001.2বিল্ট-ইনগুলি অনুমোদিত নয়, যদি তারা এই ধরণের জিনিসটির জন্য থাকে। আমি যে ব্যতিক্রম যুক্ত করব তা হ'ল যদি আপনার ভাষা স্বয়ংক্রিয়ভাবে বিপুল সংখ্যাকে বৈজ্ঞানিক স্বরলিপিতে রূপান্তর করে, এমন ক্ষেত্রে এটি আপনার আউটপুটটির জন্য গ্রহণযোগ্য।
বাইট জেতে সংক্ষিপ্ততম কোড, স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ করা।
ইনপুট
ইনপুটটি প্রতিটি নম্বর এবং অপারেটরকে স্পেস দিয়ে পৃথক করে একটি অভিব্যক্তি হবে। সংখ্যায় শর্টহ্যান্ড থাকতে পারে বা নাও থাকতে পারে। একটি নমুনা নীচে দেখানো হয়েছে:
10 + 1b - 2k
আউটপুট
আপনার ফাংশনটি অবশ্যই একটি সংখ্যা হিসাবে প্রকাশের মূল্যায়নের ফলাফলকে আউটপুট করে। যদি আউটপুট প্রদর্শিত না হতে পারে তবে এটি বৈজ্ঞানিক স্বরলিপি ব্যবহারের জন্য গ্রহণযোগ্য। সংখ্যাটি পূর্ণসংখ্যা না হলে আপনার অবশ্যই কমপক্ষে তিনটি দশমিক স্থান থাকতে হবে। সংখ্যাটি পূর্ণসংখ্য হলে আপনি এই দশমিক স্থানগুলি ধরে রাখলে তা গ্রহণযোগ্য।
পরীক্ষার কেস
ইনপুট
t
আউটপুট
1000000000000
ইনপুট
1 + 4b / 10k11
আউটপুট
399561.483
ইনপুট
e2 + k2ke-1 - b12
আউটপুট
-999799912
অথবা
-999799912.000
ইনপুট
142ek12
আউটপুট
142e1012
অথবা
142.000e1012
ইনপুট:
1.2m5.25
আউটপুট:
1200005.25
চূড়ান্ত নোটস
এটি পোস্ট করা আমার প্রথম চ্যালেঞ্জ (স্যান্ডবক্সের ব্যবহারকারীদের কাছ থেকে কিছু সাহায্য নিয়ে)। যদি কিছু অস্পষ্ট থাকে তবে তা আমার কাছে জানিয়ে দিন এবং আমি পরিষ্কার করার জন্য যথাসাধ্য চেষ্টা করব।
1000 + 2000 * 10 ^ -1, তবে এটি একটি চূড়ান্ত উত্তর দিয়েছে -999998712। (এছাড়াও, আমার ব্যাখ্যাটি নিয়ম 4 এর " শেষের শর্টহ্যান্ড ," দিয়ে মজা করে বলে মনে হচ্ছে না তবে অনুক্রমটি কীভাবে বুঝতে হবে তা আমি নিশ্চিত নই k2k।) আপনি কি দয়া করে এটি মূল্যায়নের পদক্ষেপগুলি ব্যাখ্যা করতে পারেন?
2m2kনিয়ম 3. এছাড়াও আলোচনা যোগ করা উচিত, এটি একটি ভিন্ন শব্দ ব্যবহার করা সর্বোত্তম হতে পারে - মত আক্ষরিক সংখ্যার জন্য - হয়তো "পূর্ণসংখ্যা" 123যে সংক্ষিপ্ত নয় । "সংখ্যা" শব্দটির এখানে প্রায় 3 টি পৃথক সংজ্ঞা রয়েছে, যেমনটি এখন দাঁড়িয়ে আছে।