কম্পিউটার টিউটোরিয়াল

অ্যারেতে k-তম উপাদান সিম্পল করা - JavaScript

অ্যারেতে শুরু থেকে k-তম এবং শেষ থেকে k-তম উপাদান পারস্পরিক বদলানো (সিম্পল)।

উদাহরণ

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
k = 4

// ৪র্থ উপাদান (ইন্ডেক্স ৩): 3
// শেষ থেকে ৪র্থ (ইন্ডেক্স ৬): 6
// সিম্পল後: [0, 1, 2, 6, 4, 5, 3, 7, 8, 9]

সমাধান

const swapKth = (arr, k) => {
  const len = arr.length;
  
  // ভ্যালিডেশন
  if (k < 1 || k > len) {
    throw new Error(`k must be between 1 and ${len}`);
  }
  
  const startIndex = k - 1;
  const endIndex = len - k;
  
  // একই পজিশন হলে কিছু করবেন না
  if (startIndex === endIndex) return arr;
  
  // সিম্পল
  [arr[startIndex], arr[endIndex]] = [arr[endIndex], arr[startIndex]];
  
  return arr;
};

// টেস্ট
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
swapKth(arr, 4);
console.log(arr); // [0, 1, 2, 6, 4, 5, 3, 7, 8, 9]

swapKth(arr, 8);
console.log(arr); // [0, 1, 7, 6, 4, 5, 3, 2, 8, 9]

ফাংশনাল (ইমিউটেবল) ভার্সন

const swapKthImmutable = (arr, k) => {
  const len = arr.length;
  if (k < 1 || k > len) return [...arr];
  
  const result = [...arr];
  const i = k - 1;
  const j = len - k;
  
  if (i !== j) {
    [result[i], result[j]] = [result[j], result[i]];
  }
  
  return result;
};

ব্যাখ্যা

  • k-1: ০-ভিত্তিক ইন্ডেক্সে রূপান্তর
  • len-k: শেষ থেকে k-তমের ইন্ডেক্স
  • ES6 সিম্পল: [a, b] = [b, a] - টেম্প ভেরিয়েবল ছাড়া

উৎপাদন

[ 0, 1, 2, 6, 4, 5, 3, 7, 8, 9 ]
[ 0, 1, 7, 6, 4, 5, 3, 2, 8, 9 ]
  1. জাভাস্ক্রিপ্টে অ্যারে খালি কীভাবে করবেন?

  2. জাভাস্ক্রিপ্টে অ্যারে খালি করার উপায়

  3. জাভাস্ক্রিপ্ট বেসিক অ্যারে মেথড: push, pop, shift, unshift, splice

  4. জাভাস্ক্রিপ্টে ২-ডি অ্যারে রিশেপ (Reshape) করা