ধরা যাক আমাদের একটি লগইন সিস্টেম আছে যেখানে ব্যবহারকারীদের অনন্য শনাক্ত করার জন্য একটি অনন্য userID প্রদান করতে হয়। এবং সুরক্ষার কারণে, আমরা userID কে অস্পষ্ট করতে চাই যাতে সংখ্যাটি অনুমান করা কঠিন হয়।
মূলত, আমাদের দুটি ফাংশন লিখতে হবে।
encode()
decode()
প্রথম ফাংশনটি আমাদের সংখ্যা ইনপুটকে বেস ২৬ অ্যালফাবেট ম্যাপিং-এ রূপান্তর করবে। এবং দ্বিতীয় ফাংশনটি অ্যালফাবেট ম্যাপিংকে মূল সংখ্যায় ফিরিয়ে আনবে।
যদিও এটি খুব প্র্যাকটিক্যাল নয় কারণ অধিকাংশ হ্যাশিং অ্যালগরিদম دو-মুখী রূপান্তর প্রদান করে না, কিন্তু এই প্রশ্নের উদ্দেশ্যে আমরা এটিকে বিবেচনা করছি না।
উদাহরণস্বরূপ - যদি সংখ্যাটি ৩১ হয়, তবে
encode(31) = 'ea' এবং decode('ea') = 31
উদাহরণ
কোডটি হবে -
const num = 31;
const encode = num => {
let res = '';
const legend = 'zabcdefghijklmnopqrstuvwxy';
while(num){
const rem = num % (legend.length);
res += legend[rem];
num = (Math.floor(num / legend.length));
}
return res;
};
const decode = str => {
let num = 0;
const legend = 'zabcdefghijklmnopqrstuvwxy';
for(let i = 0; i < str.length; i++){
const ind = legend.indexOf(str[i]);
num += (ind * Math.pow(legend.length, i));
}
return num;
}
console.log(encode(num));
console.log(decode('ea'));
আউটপুট
কনসোলে আউটপুট হবে -
ea 31