সমস্যা বিবরণ
নেস্টেড অ্যারে দেওয়া আছে। সবচেয়ে কম এলিমেন্ট содержа করা সাব-অ্যারে (বা অ্যারেগুলো যদি একাধিক হয়) বের করতে হবে।
ইনপুট:
const arr = [
["LEFT", "RIGHT", "RIGHT", "BOTTOM", "TOP"],
["RIGHT", "LEFT", "TOP"],
["TOP", "LEFT"]
];
আউটপুট: [["TOP", "LEFT"]]
সমাধান
const arr = [
["LEFT", "RIGHT", "RIGHT", "BOTTOM", "TOP"],
["RIGHT", "LEFT", "TOP"],
["TOP", "LEFT"]
];
const findShortest = (arr = []) => {
const res = arr.reduce((acc, val, ind) => {
if (!ind || val.length < acc[0].length) {
return [val];
}
if (val.length === acc[0].length) {
acc.push(val);
}
return acc;
}, []);
return res;
};
console.log(findShortest(arr));
আউটপুট
[ [ 'TOP', 'LEFT' ] ]
ব্যাখ্যা
reduceদিয়ে সবচেয়ে ছোট লেন্থ ট্র্যাক করা হয়েছে।- নতুন ছোট লেন্থ পাওয়া গেলে অ্যাকিউমুলেটর রিসেট করা হয়েছে।
- সমান লেন্থ পাওয়া গেলে পুশ করা হয়েছে।