ABC Corp-এর প্রতিটি কর্মী সীমাহীন জ্বালানি ভাতা পান। কর্মীরা প্রতিবার তাদের গাড়িতে জ্বালানি ভরলে একটি রেকর্ড পাঠাতে হয়। এই রেকর্ডগুলো একই JSON ফাইলে যুক্ত হয় এবং মাসের শেষে প্রক্রিয়া করা হয়।
ডিজিটাল অপারেশন্স টিমের একজন সদস্য হিসেবে আপনার কাজ হলো এই JSON ফাইলটি পড়া এবং ফলাফলগুলো আরেকটি JSON ফাইলে লেখা। আউটপুট ফাইলে প্রতিটি কর্মীর জন্য নিচের তথ্যগুলো নিয়ে একটি এন্ট্রি থাকা উচিত:
আপনাকে দুটি string আর্গুমেন্ট দেওয়া হয়।
ইনপুট JSON ফাইলে JSON অবজেক্টের একটি অ্যারে থাকে। প্রতিটি JSON অবজেক্টের রূপ নিচের মতো।
{
"type": "array",
"items": {
"type": "object",
"properties": {
"employeeId": {
"type": "integer"
},
"odometerReading": {
"type": "integer"
},
"gallons": {
"type": "number"
},
"gasPrice": {
"type": "number"
}
},
"required": [
"employeeId",
"odometerReading",
"gallons",
"gasPrice"
]
}
}
// Ballerina record type definition
type FillUpEntry record {|
int employeeId;
int odometerReading;
decimal gallons;
decimal gasPrice;
|};
আপনার কাজ হলো JSON ইনপুটকে নিচের JSON ফরম্যাটে রূপান্তর করা এবং বিষয়বস্তুটি দেওয়া পাথে লেখা। আউটপুট ফাইলে প্রতিটি কর্মীর জন্য একটি এন্ট্রি থাকা উচিত, যা employeeId অনুসারে ঊর্ধ্বক্রমে সাজানো।
{
"type": "array",
"items": {
"type": "object",
"properties": {
"employeeId": {
"type": "integer"
},
"gasFillUpCount": {
"type": "integer"
},
"totalFuelCost": {
"type": "number"
},
"totalGallons": {
"type": "number"
},
"totalMilesAccrued": {
"type": "integer"
}
},
"required": [
"employeeId",
"gasFillUpCount",
"totalFuelCost",
"totalGallons",
"totalMilesAccrued"
]
}
}
// Ballerina record type definition
type EmployeeFillUpSummary record {|
int employeeId;
int gasFillUpCount;
decimal totalFuelCost;
decimal totalGallons;
int totalMilesAccrued;
|};
n: 0 <= n <= 1000example01_input.json
[
{
"employeeId": 2312,
"odometerReading": 230,
"gallons": 18.561,
"gasPrice": 4.56
},
{
"employeeId": 2312,
"odometerReading": 500,
"gallons": 19.345,
"gasPrice": 4.89
}
]
example01_output.json
[
{
"employeeId": 2312,
"gasFillUpCount": 2,
"totalFuelCost": 179.23521,
"totalGallons": 37.906,
"totalMilesAccrued": 270
}
]
example02_input.json
[
{
"employeeId": 2413,
"odometerReading": 4089,
"gallons": 21.682,
"gasPrice": 3.46
},
{
"employeeId": 3423,
"odometerReading": 6582,
"gallons": 15.248,
"gasPrice": 4.56
},
{
"employeeId": 2413,
"odometerReading": 4127,
"gallons": 4.221,
"gasPrice": 3.40
},
{
"employeeId": 2413,
"odometerReading": 4349,
"gallons": 11.192,
"gasPrice": 4.10
},
{
"employeeId": 3423,
"odometerReading": 6767,
"gallons": 8.696,
"gasPrice": 3.34
},
{
"employeeId": 2413,
"odometerReading": 4547,
"gallons": 9.197,
"gasPrice": 2.90
}
]
example02_output.json
[
{
"employeeId": 2413,
"gasFillUpCount": 4,
"totalFuelCost": 161.92962,
"totalGallons": 46.292,
"totalMilesAccrued": 458
},
{
"employeeId": 3423,
"gasFillUpCount": 2,
"totalFuelCost": 98.57552,
"totalGallons": 23.944,
"totalMilesAccrued": 185
}
]
ballerina/io মডিউল ব্যবহার করুন। json jsonPayload = {id: "2", title: "Jeru", artist: "Gerry Mulligan", price: 17.99};
// Using cloneWithType
Album album1 = check jsonPayload.cloneWithType();
io:println(album1);
// Using fromJsonWithType
Album album2 = check jsonPayload.fromJsonWithType();
io:println(album2);
Album {id, title, artist, price} = album1;
io:println(id);
io:println(title);
function cfr(int deaths, int cases) returns decimal => <decimal>deaths / <decimal>cases * 100;
Exercism-এ সাইন আপ করুন, Ballerina ট্র্যাকের 60টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।