এই বন্ড রেটিংগুলি বাছাই করুন


23

কাজটি

ক্রেডিট রেটিং সংস্থা ইস্যুকারী ঋণযোগ্যতা অনুযায়ী বন্ড নির্ধারিত রেটিং এবং "বিগ তিন" ক্রেডিট রেটিং এজেন্সি একটি অনুরূপ (যদিও অভিন্ন নয়) ব্যবহার টায়ার্ড মুল্যেওন ব্যবস্থা । এগুলির একটি সুস্পষ্ট, যৌক্তিক আদেশ রয়েছে - এস অ্যান্ড পি স্তরগুলি ব্যবহার করে, এএএ> এএ +> এএ> এএ-> এ +> ...> বিবিবি> বি> ...> সি মুডির একটি অনুরূপ সিস্টেম ব্যবহার করে তবে তাদের স্তরগুলির নাম আলাদাভাবে ( আআ> এএ 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

দ্রষ্টব্য : আমি "বিগ থ্রি" উল্লেখ করেছি তবে কেবল মুডি এবং এসএন্ডপি এখানে উল্লেখ করেছি - কারণটি হ'ল তৃতীয়, ফিচ এসএন্ডপি হিসাবে একই সিস্টেমটি ব্যবহার করে যখন আপনি এনএ-স্টাইলের রেটিংগুলিকে বিবেচনা করবেন না, সুতরাং ফিচ সহ অপ্রয়োজনীয় হতে হবে।


3
বন্ধু, এটি যদি আপনার প্রথম পোস্ট হয় তবে আমি খুব ভাল প্রভাবিত ressed +1
অ্যাডিসন ক্রম্প

9
@ ভোটটোক্লস দীর্ঘ সময় শ্রোতা, প্রথমবারের আহ্বায়ক। ;)
পল

1
আউটপুট কেস সংবেদনশীল হতে হবে?
andlrc

@ dev-null হ্যাঁ, আউটপুটটি একই ইনপুট স্ট্রিং হওয়া উচিত, পুনরায় অর্ডার করা হবে।
পল

1
ইনপুট তালিকাগুলিতে কোনও সমান রেটিং থাকতে পারে? যদি তাই হয় তবে সমস্ত সমান আউটপুট হওয়া উচিত, বা সদৃশগুলি অপসারণ করা উচিত?
ডিজিটাল ট্রমা

উত্তর:


1

পাইথ, 16 বাইট

o+Xs}RGrN0N\z\,Q

আমরা @ নীলের পদ্ধতির সাহায্যে একটি কী দ্বারা অভিধানিকভাবে বাছাই করেছি। ইনপুট এবং আউটপুট তালিকা হিসাবে হয়; এটি তালিকার পরিবর্তন করে না।

o+Xs}RGrN0N\z\,Q       Implicit: Q = input list
                        lambda N  (N is a bond rating)
       rN0               Convert N to lowercase
    }RG                  Map is-in G, the lowercase alphabet.
   s                     Sum the list of bools; the number of letters in N.
  X       N\z            Insert "z" at that position in N.
 +           \,          Append "," to the end.
                         This works because "," is between "+" and "-" lexicographically.
o              Q       Sort Q, using that lambda as a key.

এখানে চেষ্টা করুন । পরীক্ষার কেসগুলি হ'ল প্রতিলিপি স্কিমের সমস্ত বন্ড রেটিং, যার মধ্যে একটি নকল নিক্ষেপ করা হয়।


7

ES6, 71 65 বাইট

a=>a.sort((b,c)=>r(b)>r(c)||-1,r=s=>s.replace(/[^A-z]*$/,"z$&,"))

zঅক্ষরগুলির পরে একটি সন্নিবেশ করা এবং একটি প্রত্যয় দিয়ে ,আমাদের কেবল স্ট্রিংগুলি লেক্সিকালি বাছাই করতে হবে।

সম্পাদনা করুন: @ ব্যবহারকারী81655 ধন্যবাদ 6 বাইট সংরক্ষণ করা।


ভাল যুক্তি. এটির জন্য পৃথক ফাংশন সংজ্ঞায়িত করে replaceএবং এর অভ্যন্তরীণটি ব্যবহার করে $&এটি আরও খানিকটা ছোট হতে পারে :a=>a.sort((b,c)=>(r=t=>t.replace(/[^A-z]*$/,"z$&,"))(b)>r(c)||-1)
ব্যবহারকার 81655

@ ইউজার ৮১65৫৫ বাহ, আমি আসলে ছিলাম s="$1z$2,"এবং যদিও আমি বুঝতে পেরেছিলাম যে আমি যে গল্ফটি ফেলেছিলাম $1তা আমার কাছে ঘটেনি যে এখন আমিও গল্ফকে দূরে সরিয়ে দিতে পারি $2...
নীল

2

বাশ + জিএনইউ ইউটিলিটিস, 45

ক্রেডিট জন্য @Neil কারণে পদ্ধতির

sed s/$/e/|tr +-3 d-l|sort|tr -d e|tr d-l +-3

আমার লোকেল সাজানোর জন্য, সংখ্যার সাজানোর অক্ষর এবং সামনে -সাজানোর পূর্বে +। সুতরাং এই অক্ষরগুলি বর্ণমালার সীমার মধ্যে লিখিতভাবে লিখিত হয় যাতে তারা সঠিক ক্রম অনুসারে বাছাই করে।

এটি অনলাইনে চেষ্টা করুন।

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