কাজটি
ক্রেডিট রেটিং সংস্থা ইস্যুকারী ঋণযোগ্যতা অনুযায়ী বন্ড নির্ধারিত রেটিং এবং "বিগ তিন" ক্রেডিট রেটিং এজেন্সি একটি অনুরূপ (যদিও অভিন্ন নয়) ব্যবহার টায়ার্ড মুল্যেওন ব্যবস্থা । এগুলির একটি সুস্পষ্ট, যৌক্তিক আদেশ রয়েছে - এস অ্যান্ড পি স্তরগুলি ব্যবহার করে, এএএ> এএ +> এএ> এএ-> এ +> ...> বিবিবি> বি> ...> সি মুডির একটি অনুরূপ সিস্টেম ব্যবহার করে তবে তাদের স্তরগুলির নাম আলাদাভাবে ( আআ> এএ 1> এএ 2> ...> বাআ 1> ...> সি)।
আপনার কাজটি এমন একটি প্রোগ্রাম ডিজাইন করা যা বন্ড রেটিংয়ের স্তরগুলির প্রতিনিধিত্ব করে স্ট্রিংগুলির একটি তালিকা ইনপুট হিসাবে গ্রহণ করে এবং একই তালিকাটিকে আউটপুট হিসাবে নেয়, যা সর্বোচ্চ স্তর (এএএ / এএএ) থেকে সর্বনিম্ন স্তর (সি) পর্যন্ত ক্রমবর্ধমান ক্রমে সাজানো হয়।
ইনপুট আউটপুট
আপনি ইনপুটটির ফর্ম্যাট (তালিকা, প্রতি যুক্তি হিসাবে একটি, সিএসভি ফাইল) চয়ন করতে পারেন। আপনি ধরে নিতে পারেন যে ইনপুট তালিকার প্রতিটি আইটেম একটি বৈধ রেটিং স্ট্রিং এবং তালিকার সমস্ত রেটিং স্ট্রিং একই রেটিং এজেন্সি থেকে এসেছে । অতিরিক্ত হিসাবে, আপনি ধরে নিতে পারেন যে "এনআর" বা "ডাব্লুআর" এর মতো মজাদার এনএ-স্টাইলের কোনও রেটিং অন্তর্ভুক্ত থাকবে না - এটি "আআ / এএএ" থেকে "সি" পর্যন্ত কঠোরভাবে রয়েছে। ইনপুট তালিকায় নকল রেটিং থাকতে পারে এবং যদি পাওয়া যায় তবে সেগুলি সরানো উচিত নয়।
আপনার ভাষার জন্য উপযুক্ত হিসাবে আপনি আউটপুটটির ফর্ম্যাটটিও চয়ন করতে পারেন, কেবলমাত্র সীমাবদ্ধতার সাথে এটি ইউটিএফ -8 বা এএসসিআইআই এর মতো কিছু স্ট্যান্ডার্ড পাঠ্য এনকোডিং আউটপুট করা উচিত।
বিধি এবং স্কোরিং
এটি কোড গল্ফ, তাই সর্বনিম্ন বাইট গণনা জয়, মান লুফোলগুলি অনুমোদিত নয়। দয়া করে ইনপুট এবং আউটপুট ফর্ম্যাটটি নির্দিষ্ট করুন।
উদাহরণ প্রোগ্রাম এবং পরীক্ষার কেস
নীচের পাইথন প্রোগ্রামটির উদাহরণটি সঠিক সাজানোর ক্রমের একটি আদর্শ উদাহরণ হিসাবে ব্যবহার করা যেতে পারে। তালিকাগুলি Moody
এবং SP
ব্যবহারের অর্ডারগুলি।
Moody = ['Aaa', 'Aa1', 'Aa2', 'Aa3', 'A1', 'A2', 'A3',
'Baa1', 'Baa2', 'Baa3', 'Ba1', 'Ba2', 'Ba3',
'B1', 'B2', 'B3', 'Caa', 'Ca', 'C']
SP = ['AAA', 'AA+', 'AA', 'AA-', 'A+', 'A', 'A-',
'BBB+', 'BBB', 'BBB-', 'BB+', 'BB', 'BB-',
'B+', 'B', 'B-', 'CCC', 'CC', 'C']
test_cases = [
(['Aa2', 'Aaa', 'Aa1'], ['Aaa', 'Aa1', 'Aa2']),
(['AA', 'AA-', 'AA+'], ['AA+', 'AA', 'AA-']),
(['Baa1', 'Ba1', 'A1', 'B1', 'Aaa', 'C', 'Caa', 'Aa1'],
['Aaa', 'Aa1', 'A1', 'Baa1', 'Ba1', 'B1', 'Caa', 'C']),
(['BBB+', 'BB+', 'A+', 'B+', 'AAA', 'C', 'CCC', 'AA+'],
['AAA', 'AA+', 'A+', 'BBB+', 'BB+', 'B+', 'CCC', 'C']),
(['B3', 'B1', 'B2'], ['B1', 'B2', 'B3']),
(['B-', 'B+', 'B'], ['B+', 'B', 'B-']),
(['B3', 'Caa', 'Aa1', 'Caa', 'Ca', 'B3'],
['Aa1', 'B3', 'B3', 'Caa', 'Caa', 'Ca']),
(['B-', 'CCC', 'AA+', 'CCC', 'CC', 'B-'],
['AA+', 'B-', 'B-', 'CCC', 'CCC', 'CC'])
]
mdy_sort = lambda x: Moody.index(x)
sp_sort = lambda x: SP.index(x)
for l_in, l_out in test_cases:
sort_key = mdy_sort if set(l_in).issubset(set(Moody)) else sp_sort
assert sorted(l_in, key=sort_key) == l_out
পরীক্ষার মামলা
পাইথন-স্টাইল পরীক্ষার কেস ফর্ম্যাটিংটি অসুবিধাগুলির ক্ষেত্রে, আমি এটিকে স্পেস-ডিলিমেটেড ইনপুট স্ট্রিং হিসাবে আউটপুট দিয়েছি (আউটপুট পরে দুটি লাইনের জোড়া ইনপুটে গ্রুপযুক্ত করা হয়েছে):
Aa2 Aaa Aa1
Aaa Aa1 Aa2
AA AA- AA+
AA+ AA AA-
Baa1 Ba1 A1 B1 Aaa C Caa Aa1
Aaa Aa1 A1 Baa1 Ba1 B1 Caa C
BBB+ BB+ A+ B+ AAA C CCC AA+
AAA AA+ A+ BBB+ BB+ B+ CCC C
B3 B1 B2
B1 B2 B3
B- B+ B
B+ B B-
B3 Caa Aa1 Caa Ca B3
Aa1 B3 B3 Caa Caa Ca
B- CCC AA+ CCC CC B-
AA+ B- B- CCC CCC CC
দ্রষ্টব্য : আমি "বিগ থ্রি" উল্লেখ করেছি তবে কেবল মুডি এবং এসএন্ডপি এখানে উল্লেখ করেছি - কারণটি হ'ল তৃতীয়, ফিচ এসএন্ডপি হিসাবে একই সিস্টেমটি ব্যবহার করে যখন আপনি এনএ-স্টাইলের রেটিংগুলিকে বিবেচনা করবেন না, সুতরাং ফিচ সহ অপ্রয়োজনীয় হতে হবে।