อาร์เรย์อะนากราม (Anagram arrays)
อาร์เรย์หนึ่งเป็นอะนากรามของอีกอาร์เรย์ ถ้าเราสามารถสุ่มลำดับสมาชิกของอาร์เรย์นั้นเพื่อให้ได้อีกอาร์เรย์หนึ่ง
เช่น [1, 2, 3] และ [2, 1, 3] เป็นอะนากรามกัน
สมมติว่าเรามีสองอาร์เรย์ arr1 และ arr2 ที่เป็นอะนากรามกัน เราต้องเขียนฟังก์ชันที่รับสองอาร์เรย์นี้และคืนอาร์เรย์แมปปิ้งความยาวเท่ากับ arr1 และ arr2 อาร์เรย์แมปปิ้งควรมีดัชนีของสมาชิก arr1 ตามที่ปรากฏใน arr2
ตัวอย่าง
ถ้าสองอาร์เรย์นำเข้าคือ:
const arr1 = [23, 39, 57, 43, 61]; const arr2 = [61, 23, 43, 57, 39];
ผลลัพธ์ควรเป็น:
const output = [1, 4, 3, 2, 0];
เพราะสมาชิกดัชนี 0 ใน arr1 อยู่ที่ดัชนี 1 ใน arr2, สมาชิกดัชนี 1 อยู่ที่ดัชนี 4 ฯลฯ
ตัวอย่างโค้ด
const arr1 = [23, 39, 57, 43, 61];
const arr2 = [61, 23, 43, 57, 39];
const anagramMappings = (arr1 = [], arr2 = []) => {
const res = [];
for(let i = 0; i < arr1.length; i++) {
for(let j = 0; j < arr2.length; j++) {
if(arr1[i] == arr2[j]) {
res.push(j);
}
}
}
return res;
};
console.log(anagramMappings(arr1, arr2));
ผลลัพธ์
[1, 4, 3, 2, 0]