สมมติว่าเรามีระบบล็อกอินที่ผู้ใช้ต้องระบุ userID เฉพาะตัวเพื่อระบุตัวตน และเพื่อเหตุผลด้านความปลอดภัย เราต้องการทำให้ userID ไม่ชัดเจน เพื่อให้ยากที่จะเดาตัวเลขได้
โดยพื้นฐานแล้ว เราต้องเขียนฟังก์ชันสองตัว
encode()
decode()
ฟังก์ชันแรกควรแปลงอินพุตตัวเลขเป็นการแมปอักษรฐาน 26 และฟังก์ชันที่สองควรแปลงการแมปอักษรกลับเป็นตัวเลขเดิม
แม้วิธีนี้จะไม่ค่อยเป็นประโยชน์ในทางปฏิบัติ เนื่องจากอัลกอริทึมแฮชส่วนใหญ่ไม่รองรับการแปลงสองทาง แต่เพื่อวัตถุประสงค์ของคำถามนี้ เราจะไม่พิจารณาปัจจัยนั้น
ตัวอย่างเช่น ถ้าตัวเลขคือ 31 แล้ว
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