Map, Filter, এবং Reduce Operations

Lists এবং List Operations (লিস্ট এবং লিস্ট অপারেশনস) - লিস্প (LISP) - Computer Programming

325

Map, Filter, এবং Reduce হল তিনটি গুরুত্বপূর্ণ Higher-Order Functions যা Functional Programming এর মূল কৌশল হিসেবে কাজ করে। এই তিনটি অপারেশন ফাংশনাল প্রোগ্রামিং ভাষায়, যেমন LISP, Python, JavaScript, ইত্যাদিতে ব্যবহৃত হয়, যাতে লিস্ট (বা যেকোনো Iterable) এর উপর কার্যক্রম পরিচালনা করা যায়। এই অপারেশনগুলি আপনাকে ডাটা স্ট্রাকচার (বিশেষ করে লিস্ট) এ বিভিন্ন কার্যক্রম সহজে প্রয়োগ করতে সহায়ক হয়।

এখানে আমরা Map, Filter, এবং Reduce এর ধারণা, ব্যবহার, এবং উদাহরণ আলোচনা করব।


১. Map Operation (ম্যাপ অপারেশন)

Map অপারেশন একটি ফাংশন নিয়ে কাজ করে, যেটি একটি লিস্টের প্রতিটি উপাদানকে প্রসেস করে এবং নতুন একটি লিস্ট তৈরি করে, যেখানে প্রতিটি উপাদান ফাংশনটির মাধ্যমে পরিবর্তিত হয়।

ব্যবহারের ধরন:

(mapcar function list)

এখানে, mapcar হল LISP-এর map অপারেশনের কনস্ট্রাক্ট, যা লিস্টের প্রতিটি উপাদানে ফাংশন প্রয়োগ করে নতুন একটি লিস্ট ফেরত দেয়।

উদাহরণ:

ধরা যাক, আমাদের একটি লিস্ট আছে এবং আমরা প্রতিটি উপাদানকে ২ দিয়ে গুণ করতে চাই।

(setq numbers '(1 2 3 4 5))
(mapcar (lambda (x) (* x 2)) numbers)  ; আউটপুট: (2 4 6 8 10)

এখানে:

  • mapcar ফাংশনটি numbers লিস্টের প্রতিটি উপাদানে (lambda (x) (* x 2)) ফাংশনটি প্রয়োগ করেছে এবং একটি নতুন লিস্ট তৈরি করেছে যেখানে প্রতিটি উপাদান দ্বিগুণ হয়েছে।

২. Filter Operation (ফিল্টার অপারেশন)

Filter অপারেশন একটি ফাংশন নিয়ে কাজ করে এবং একটি লিস্টের শুধু সেই উপাদানগুলিকে নির্বাচন করে, যা একটি শর্ত পূর্ণ করে। এই অপারেশনটি নতুন একটি লিস্ট তৈরি করে, যেখানে শুধু শর্ত পূর্ণকারী উপাদানগুলি থাকবে।

ব্যবহারের ধরন:

(remove-if-not predicate list)

এখানে, remove-if-not হল LISP এর filter অপারেশন, যা একটি শর্তের ভিত্তিতে লিস্ট থেকে নির্দিষ্ট উপাদানগুলি ফিল্টার করে।

উদাহরণ:

ধরা যাক, আমাদের একটি লিস্ট আছে এবং আমরা শুধু এমন উপাদানগুলি রাখতে চাই, যেগুলোর মান ৩ এর বেশি।

(setq numbers '(1 2 3 4 5 6))
(remove-if-not (lambda (x) (> x 3)) numbers)  ; আউটপুট: (4 5 6)

এখানে:

  • remove-if-not ফাংশনটি numbers লিস্ট থেকে এমন উপাদানগুলিই রাখবে, যেগুলি 3 এর বেশি হবে।

৩. Reduce Operation (রিডিউস অপারেশন)

Reduce অপারেশন একটি ফাংশন নিয়ে কাজ করে এবং লিস্টের উপাদানগুলিকে একক একটি মানে রিডিউস করে, অর্থাৎ সমস্ত উপাদানকে একটি সিঙ্গেল ভ্যালুতে পরিণত করা হয়। এই অপারেশনটি সাধারণত কিছু নির্দিষ্ট কাজ সম্পাদন করার জন্য যেমন যোগফল বা গুণফল বের করার জন্য ব্যবহৃত হয়।

ব্যবহারের ধরন:

(reduce function list)

এখানে, reduce হল LISP এর reduce অপারেশন, যা লিস্টের উপাদানগুলিকে একটি একক মানে কম্পাইল করে। এটি প্রথম দুইটি উপাদান নিয়ে ফাংশনটি প্রয়োগ করে এবং পরবর্তী উপাদানগুলির উপরও একইভাবে কাজ করে।

উদাহরণ:

ধরা যাক, আমাদের একটি লিস্ট আছে এবং আমরা তার সব উপাদানের যোগফল বের করতে চাই।

(setq numbers '(1 2 3 4 5))
(reduce #'+ numbers)  ; আউটপুট: 15

এখানে:

  • reduce ফাংশনটি numbers লিস্টের সমস্ত উপাদানগুলোর ওপর + ফাংশনটি প্রয়োগ করে, এবং যোগফল হিসেবে 15 প্রদান করবে।

পার্থক্য

অপারেশনউদ্দেশ্যউদাহরণ
Mapপ্রতিটি উপাদানে ফাংশন প্রয়োগ করে একটি নতুন লিস্ট তৈরি করা।(mapcar (lambda (x) (* x 2)) '(1 2 3))
Filterশর্ত পূর্ণকারী উপাদানগুলিকে নির্বাচন করে নতুন একটি লিস্ট তৈরি করা।(remove-if-not (lambda (x) (> x 3)) '(1 2 3 4))
Reduceলিস্টের উপাদানগুলিকে একটি একক মানে রিডিউস করা।(reduce #'+ '(1 2 3 4 5))

সারসংক্ষেপ

  • Map অপারেশনটি একটি লিস্টের প্রতিটি উপাদানে একটি ফাংশন প্রয়োগ করে এবং নতুন একটি লিস্ট তৈরি করে।
  • Filter অপারেশনটি একটি শর্তের ভিত্তিতে লিস্ট থেকে কিছু উপাদান ফিল্টার করে এবং নতুন একটি লিস্ট তৈরি করে।
  • Reduce অপারেশনটি একটি লিস্টের সমস্ত উপাদানকে একটি একক মানে কম্পাইল করে, যেমন যোগফল বা গুণফল বের করা।

এই তিনটি অপারেশন ফাংশনাল প্রোগ্রামিং এ ডাটা প্রক্রিয়াকরণের অত্যন্ত শক্তিশালী টুলস এবং LISP সহ অন্যান্য ভাষায় ব্যবহৃত হয়ে থাকে।

Content added By
Promotion

Are you sure to start over?

Loading...