আপনি এমন একটি কোম্পানিতে কাজ করেন, যেটি Lexiconia নামের একটি অনলাইন মাল্টিপ্লেয়ার গেম তৈরি করে।
গেমটি খেলতে প্রতিটি খেলোয়াড়কে ১৩টি অক্ষর দেওয়া হয়, যা সাজিয়ে তাদের শব্দ তৈরি করতে হয়। ভিন্ন অক্ষরের পয়েন্ট মানও ভিন্ন, কারণ কিছু অক্ষর দিয়ে শব্দ তৈরি করা অন্যগুলোর চেয়ে সহজ।
গেমটি প্রথমে ইংরেজিতে চালু হয়েছিল, কিন্তু এটি খুব জনপ্রিয়, আর এখন কোম্পানিটি অন্যান্য ভাষাতেও বিস্তার করতে চায়।
ভিন্ন ভাষায় অক্ষরের জন্য ভিন্ন পয়েন্ট মান সমর্থন করা প্রয়োজন। ওই ভাষার অন্য অক্ষরগুলোর তুলনায় অক্ষরগুলো কত ঘন ঘন ব্যবহৃত হয়, তা দিয়েই পয়েন্ট মান নির্ধারিত হয়।
উদাহরণস্বরূপ, ইংরেজিতে 'C' অক্ষরটি বেশ কমন, তাই এর মূল্য মাত্র ৩ পয়েন্ট। কিন্তু নরওয়েজিয়ান ভাষায় এটি খুব বিরল অক্ষর, তাই এর মূল্য ১০ পয়েন্ট।
নতুন ভাষা যোগ করা সহজ করতে, গেমে অক্ষর ও তাদের পয়েন্ট মান সংরক্ষণের পদ্ধতিটি আপনার টিমকে পরিবর্তন করতে হবে।
আপনার কাজ হলো গেমে অক্ষর এবং তাদের পয়েন্ট মানের ডেটা ফরম্যাট পরিবর্তন করা।
বর্তমানে অক্ষরগুলো তাদের স্কোরের ভিত্তিতে গ্রুপে গ্রুপে সংরক্ষিত থাকে, একটি এক-থেকে-অনেক ম্যাপিংয়ে।
এটি পরিবর্তন করে প্রতিটি আলাদা অক্ষরকে তার স্কোরসহ এক-থেকে-এক ম্যাপিংয়ে সংরক্ষণ করতে হবে।
এই পরিবর্তনের অংশ হিসেবে টিম আরও সিদ্ধান্ত নিয়েছে যে অক্ষরগুলো বড় হাতের নয়, ছোট হাতের হবে।
আগে ডেটা কীভাবে সাজানো ছিল এবং তা কীভাবে পরিবর্তন করতে হবে তা দেখতে চাইলে টেস্ট স্যুটের উদাহরণগুলো একবার দেখুন।
AWK একটি ETL টুল হিসেবে খুব বেশি ব্যবহার করা হয় (ইনপুট পড়া, তা প্রসেস করা, আর একটি "রিপোর্ট" লেখা)। বাস্তবে দেখা যায়, ইনপুট ফরম্যাট প্রায়ই কিছুটা জটিল হয়। এই অনুশীলনীতে সেটাই অনুকরণ করার চেষ্টা করা হবে, অসামঞ্জস্যপূর্ণ ইনপুট ফরম্যাট ব্যবহার করে, যা আপনার প্রোগ্রামকে নরমালাইজ করতে হবে।
Exercism-এ সাইন আপ করুন, AWK ট্র্যাকের 3টি কনসেপ্ট92টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।