ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของลิเทอรัลอย่างน้อย 2 สมาชิก ฟังก์ชันควรคืนค่าทุกวิธีการแบ่งอาร์เรย์เป็นสองส่วนที่ไม่ว่าง
เช่น สำหรับอาร์เรย์ ["az", "toto", "picaro", "zone", "kiwi"]
ความเป็นไปได้คือ:
"(az, toto picaro zone kiwi)(az toto, picaro zone kiwi)(az toto picaro, zone kiwi)(az toto picaro zone, kiwi)"
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const arr = ["az", "toto", "picaro", "zone", "kiwi"];
const findAllPossiblities = (arr = []) => {
let array;
const res = [];
for (let i = 1; i < arr.length; i++) {
array = [];
array.push(arr.slice(0, i).join(" "));
array.push(arr.slice(i).join(" "));
res.push(array);
}
return res;
};
console.log(findAllPossiblities(arr));
ผลลัพธ์
[ [ 'az', 'toto picaro zone kiwi' ], [ 'az toto', 'picaro zone kiwi' ], [ 'az toto picaro', 'zone kiwi' ], [ 'az toto picaro zone', 'kiwi' ] ]
คำอธิบายเพิ่มเติม
แบ่งที่ตำแหน่ง i=1 ถึง n-1 ส่วนซ้าย slice(0,i) ส่วนขวา slice(i) join ด้วย space จำนวนวิธี = n-1 วิธี สำหรับ n=5 ได้ 4 วิธี