สมมติเรามีตัวเลข 12145 ต้องเขียนฟังก์ชันแมปหลักของตัวเลขเป็นตัวอักษรอังกฤษตามเกณฑ์: ตัวอักษรแมปตามดัชนี 1-based เช่น 'a' สำหรับ 1, 'b' สำหรับ 2, 'c' สำหรับ 3, เป็นต้น
สามารถแมปได้หลายวิธี เช่น 12145 -> 1,2,1,4,5 -> a,b,a,d,e หรือ 12,1,4,5 -> l,a,d,e หรือ 12,14,5 -> l,n,e แต่ไม่สามารถเป็น 1,2,1,45 เพราะไม่มีการแมปสำหรับ 45 ฟังก์ชันควรคืนค่าอาร์เรย์ของทุก permutation ของการแมปตัวอักษร
ตัวอย่าง
const num = 12145; const mapToAlphabets = num => { const numStr = '' + num; let res = []; const shoveElements = (left, right) => { if (!left.length) { res.push(right.map(el => { return (+el + 9).toString(36); }).join('')); return; }; if(+left[0] > 0){ shoveElements(left.slice(1), right.concat(left[0])); }; if(left.length >= 2 && +(left.slice(0, 2)) <= 26){ shoveElements(left.slice(2), right.concat(left.slice(0, 2))); }; }; shoveElements(numStr, []); return res; } console.log(mapToAlphabets(num));ผลลัพธ์
ผลลัพธ์ในคอนโซล:
[ 'abade', 'abne', 'aude', 'lade', 'lne' ]