কম্পিউটার

জাভাস্ক্রিপ্টে বাটারফ্লাই শাফেল কীভাবে করবেন?


জাভাস্ক্রিপ্টে একটি প্রজাপতির এলোমেলো অ্যারে হল সংখ্যার একটি অ্যারে যা এমনভাবে সাজানো হয় যে আমরা অ্যারের কেন্দ্রে যাওয়ার সাথে সাথে সংখ্যাগুলি হ্রাস পায় এবং আমরা অ্যারের শেষের দিকে যাওয়ার সাথে সাথে বৃদ্ধি পায়। সবচেয়ে বড় সংখ্যাটি প্রথম সূচকে রাখা হয়েছে।

বাটারফ্লাই এলোমেলো অ্যারের আরেকটি ভিন্নতা হল যেখানে সংখ্যা কেন্দ্রের দিকে বৃদ্ধি পায় এবং শেষের দিকে হ্রাস পায়। এই ক্ষেত্রে ক্ষুদ্রতম সংখ্যাটি প্রথম সূচকে স্থাপন করা হয়।

গণিতের ব্যাকগ্রাউন্ড থেকে আসা লোকেদের জন্য, এটি কিছুটা গুয়াসিয়ান ডিস্ট্রিবিউশনের সাথে সম্পর্কিত।

উদাহরণ

ধরুন আমাদের এই অ্যারে আছে −

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

যদি আমরা এটিতে প্রজাপতির পরিবর্তন প্রয়োগ করি, আউটপুট হবে −

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

দেখুন কিভাবে সবচেয়ে বড় এবং দ্বিতীয় বৃহত্তম সংখ্যাগুলিকে চরম প্রান্তে এবং ক্ষুদ্রতম সংখ্যাটিকে কেন্দ্রে রাখা হয়৷

আরেকটি সম্ভাবনা −

হতে পারে
[0, 2, 4, 6, 8, 9, 7, 5, 3, 1] 

আমাদের কাজ হল এমন একটি ফাংশন লেখা যা সংখ্যার একটি অ্যারে এবং একটি স্ট্রিংকে সেকেন্ড আর্গুমেন্ট হিসাবে নেয়, স্ট্রিং দুটি মান 'asc' বা 'des' এর যেকোনো একটি নিতে পারে। −

  • যদি স্ট্রিং 'des' হয়, তাহলে আমাদের বিন্যাসটি ক্রমবর্ধমান থেকে হ্রাসের ক্রমে পরিবর্তন করতে হবে।

  • যদি এটি 'asc' হয় তাহলে আমাদের বিন্যাসটি কমতে কমতে ক্রমবর্ধমান ক্রমে পরিবর্তন করতে হবে।

পন্থা

  • যদি স্ট্রিংটি 'asc' হয় তবে আমরা প্রাথমিকভাবে অ্যারেকে আরোহী ক্রমে সাজাই অন্যথায় অবরোহ ক্রমে। সুতরাং, বিবেচনা করুন ফাংশনটিকে 'asc' দিয়ে কল করা হয়েছিল, তাহলে অ্যারেটি এখন −

    এর মতো দেখাবে
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
  • তারপর আমরা অ্যারেটিকে দুটি অ্যারেতে বিভক্ত করি যাতে সংলগ্ন উপাদানগুলি বিপরীত সারিতে বিতরণ করা হয়। আমরা উপাদানগুলিকে একটি অ্যারেতে পুশ করি যখন আমরা সেগুলিকে অন্যটিতে সরিয়ে দিই, যাতে একটি অ্যারে আমাদের ম্যানুয়ালি না করেই বিপরীত হয়ে যায়৷

এইভাবে গঠিত দুটি অ্যারে −

এর মত দেখাবে
[ 0, 2, 4, 6, 8 ] [ 9, 7, 5, 3, 1 ]
  • এখন শেষ ধাপ হল এই অ্যারেগুলিকে একত্রিত করা এবং এর পরে আমরা আমাদের প্রয়োজনীয় অ্যারে পাব। এই সব কোডে রাখলে এরকম কিছু দেখাবে -

উদাহরণ

const array =[8,2,6,3,9,1,4,5,0,7];const butterflyShuffle =(অ্যারে, অর্ডার ='asc') => { //এর একটি নতুন কপি তৈরি করা হচ্ছে অ্যারে যাতে আমরা মূল অ্যারে কনস্ট arr =array.slice(); arr.sort((a, b) => ক্রম ==='asc'? a-b :b-a) যুক্তির উপর ভিত্তি করে // আরোহী বা অবরোহ বাছাই করা; const first =[], দ্বিতীয় =[]; //এই ভেরিয়েবলটি পরে নির্ধারণ করতে সাহায্য করবে কোন অ্যারেটি বিরেভার্স করা হবে //এবং কোনটি কোনটির সাথে সংযুক্ত করা হবে //যদি দৈর্ঘ্য সমান হয়, তার মানে শেষ উপাদানটি দ্বিতীয় অ্যারেতে যাবে //অন্যথায় এটি প্রথমটিতে যাবে array const isEven =arr.length % 2 ===0; জন্য (আসুন i =0; i আউটপুট 

কনসোলে আউটপুট হবে −

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

  1. জাভাস্ক্রিপ্টে অ্যারেকে সেটে কীভাবে রূপান্তর করবেন?

  2. কিভাবে জাভাস্ক্রিপ্টে আইডি দ্বারা অবজেক্টের অ্যারে গ্রুপ করবেন?

  3. জাভাস্ক্রিপ্টে তারিখ অ্যারে কীভাবে সাজানো যায়

  4. কিভাবে একটি জাভাস্ক্রিপ্ট অ্যারেকে C# অ্যারেতে রূপান্তর করবেন?