काम
क्रेडिट रेटिंग एजेंसियों जारीकर्ता के साख योग्यता के अनुसार बांड को असाइन रेटिंग और "बिग थ्री" क्रेडिट रेटिंग एजेंसियों के लिए एक समान है (हालांकि समान नहीं) का उपयोग स्तरीय रेटिंग प्रणाली । इनका एक स्पष्ट, तार्किक क्रम है - S & P tiers, AAA> AA +> AA-> A-> A +> ...> BBB> B> ...> C. Moody एक समान प्रणाली का उपयोग करता है, लेकिन उनके स्तरों को अलग नाम देता है ( आआ> आ १> आ २> ...> ब १>>> ग)।
आपका कार्य एक प्रोग्राम डिजाइन करना है जो इनपुट के रूप में बॉन्ड रेटिंग टियर का प्रतिनिधित्व करता है और उसी सूची को आउटपुट करता है, जो उच्चतम टीयर (एएए / एएए) से सबसे निचले स्तर (सी) तक अवरोही क्रम में क्रमबद्ध होता है।
इनपुट आउटपुट
आप इनपुट का प्रारूप चुन सकते हैं (सूची, एक प्रति तर्क, सीएसवी फ़ाइल)। आप मान सकते हैं कि इनपुट सूची में प्रत्येक आइटम एक मान्य रेटिंग स्ट्रिंग है और सूची में सभी रेटिंग स्ट्रिंग एक ही रेटिंग एजेंसी से आए हैं । इसके अतिरिक्त, आप मान सकते हैं कि "एनआर" या "डब्ल्यूआर" जैसी कोई भी कायरतापूर्ण एनए-शैली रेटिंग शामिल नहीं होगी - यह "आ / एएए" से "सी" तक सख्ती से है। इनपुट सूची में डुप्लिकेट रेटिंग हो सकती है, और यदि पाया जाए तो उन्हें हटाया नहीं जाना चाहिए।
आप आउटपुट का प्रारूप भी चुन सकते हैं, जो आपकी भाषा के लिए उपयुक्त है, एकमात्र प्रतिबंध यह है कि इसे कुछ मानक टेक्स्ट एन्कोडिंग जैसे UTF-8 या ASCII में आउटपुट करना चाहिए।
नियम और स्कोरिंग
यह कोड गोल्फ है, इसलिए सबसे कम बाइट काउंट जीतता है, मानक कमियां समाप्त हो जाती हैं। कृपया बताएं कि इनपुट और आउटपुट प्रारूप क्या है।
उदाहरण कार्यक्रम और परीक्षण के मामले
नीचे दिए गए उदाहरण पायथन कार्यक्रम को सही क्रम क्रम के मानक उदाहरण के रूप में इस्तेमाल किया जा सकता है। सूचियों 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
नोट : मैं "बिग थ्री" का उल्लेख करता हूं, लेकिन केवल मूडीज और एसएंडपी को यहां निर्दिष्ट करता हूं - कारण यह है कि तीसरा, फिच, एस एंड पी के समान सिस्टम का उपयोग करता है जब आप एनए-शैली रेटिंग्स को ध्यान में नहीं रखते हैं, तो फिच सहित बेमानी हो।