Insure Everyone নামের একটি কোম্পানি তার কর্মচারীদের বিদেশি মুদ্রায় বেতন দিচ্ছে। কিন্তু আইনি বাধ্যবাধকতার কারণে বেতনটি স্থানীয় মুদ্রায় রূপান্তর করতে হয়। কোম্পানিটির কর্মচারীরা সারা বিশ্বে ছড়িয়ে আছেন। Insure Everyone-এর HR বিভাগ প্রতিটি কর্মচারীর বেতন তার নিজ নিজ স্থানীয় মুদ্রায় রূপান্তর করার একটি প্রোগ্রাম বানাতে একজন দক্ষ ডেভেলপারের সাহায্য চাইছে। Insure Everyone বাইরের একটি API থেকে পাওয়া বিনিময় হারের ওপর নির্ভর করে।
বাইরের বিনিময় হার API-টি ব্যবহার করে আপনাকে এমন একটি ফাংশন লিখতে হবে, যা একটি source currency, salary (উৎস মুদ্রায়) এবং কর্মচারীর local currency নেবে এবং সেই বেতনটি স্থানীয় মুদ্রায় রিটার্ন করবে।
বাইরের মুদ্রা বিনিময় API থেকে পাওয়া রেসপন্সটি নিচে দেওয়া হলো:
নোট: সমস্যার বিবৃতিটি ছোট রাখার জন্য
rates-গুলো সংক্ষিপ্ত করা হয়েছে
{
"base": "EUR",
"rates": {
"AED": 4.167972,
"AFN": 118.91123,
"ALL": 121.353306,
"AMD": 546.175542,
"ANG": 2.035384,
"AOA": 629.106987,
"ARS": 116.624363,
"AUD": 1.580224,
"AWG": 2.042846,
"AZN": 1.92923,
"BAM": 1.95468,
"BBD": 2.26981,
"BDT": 97.024176,
"BGN": 1.956957,
"BHD": 0.428175,
"BIF": 2257.462616,
"BMD": 1.134504,
"BND": 1.534691,
"BOB": 7.773946,
"BRL": 6.394753,
"BSD": 1.134916,
"BTC": 0.000027,
"BTN": 83.896824,
"BWP": 13.167125,
}
}
USD-এর জন্য বিনিময় হার পাওয়ার একটি উদাহরণ অনুরোধ:
GET http://localhost:8080/rates/USD
{
"base": "USD",
"rates": {
"AED": 3.672477643818380310171368756063197,
"AFN": 104.7748962262571579872079201988508,
"ALL": 106.9266548068103418652047146893925,
"AMD": 481.2454276553169780099231576470961,
"ANG": 1.793414695824643301163693331958788,
"AOA": 554.3178661774696212335484143830275,
"ARS": 102.7598951821316197338845611280433,
"AUD": 1.392364754903645275750470737610812,
"AWG": 1.799989602800547350872880138793802,
"AZN": 1.699880432206294535038121596128717,
"BAM": 1.722304900517304728699178180683942,
"BBD": 1.999971804204874171858658003508614,
"BDT": 85.48980589838411660371074286227852,
"BGN": 1.724311207564226937381544618524109,
"BHD": 0.3772729555625457630971671155965922,
"BIF": 1989.092294529751410010035940827599,
"BMD": 0.9996325735447665520331371082216295
// omitted
}
}
salary <= 10000sourceCurrency আর targetCurrency হলো ISO মুদ্রা কোড (বর্ণভিত্তিক)। টেস্ট ইনপুটে ভুল মুদ্রা কোড থাকতে পারে।5 দশমিক স্থান পর্যন্ত যাচাই করা হবে।আপনাকে আপনার কোডটি নিচের ফাংশনটির ভেতরে লিখতে হবে।
# The exchange rate API base URL
configurable string apiUrl = "http://localhost:8080";
# Convert provided salary to local currency.
#
# + salary - Salary in source currency
# + sourceCurrency - Soruce currency
# + localCurrency - Employee's local currency
# + return - Salary in local currency or error
public function convertSalary(decimal salary, string sourceCurrency, string localCurrency) returns decimal|error {
// TODO: Write your code here
return 0;
}
bal run দিয়ে প্রজেক্টটি চালিয়ে নিজে হাতে টেস্ট করতে পারেন, নয়তো ইউনিট টেস্ট লিখে bal test দিয়ে সেগুলো চালাতে পারেন। backend সার্ভিসটি http://localhost:8080-এ স্বয়ংক্রিয়ভাবে চালু হয়ে যাবেধরে নিন, বাইরের মুদ্রা বিনিময় সেবাটি নিচের রূপান্তর হারের রেসপন্সটি দিয়েছে (বাদ দেওয়া হয়েছে):
{
"base": "USD",
"rates": {
// omitted
"GBP": 0.73584,
// omitted
}
}
ফাংশনটিকে 735.84000 রিটার্ন করতে হবে
ধরে নিন, বাইরের মুদ্রা বিনিময় সেবাটি নিচের রূপান্তর হারের রেসপন্সটি দিয়েছে (বাদ দেওয়া হয়েছে):
{
"base": "GBP",
"rates": {
// omitted
"USD": 1.35898,
// omitted
}
}
ফাংশনটিকে 1358.9800 রিটার্ন করতে হবে
Exercism-এ সাইন আপ করুন, Ballerina ট্র্যাকের 60টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।