Map, Filter, এবং Reduce এর ব্যবহার

Functional Programming (ফাংশনাল প্রোগ্রামিং) - ডি প্রোগ্রামিং (D Programming) - Computer Programming

354

Map, Filter, এবং Reduce এর ব্যবহার


Map, Filter, এবং Reduce হল ফাংশনাল প্রোগ্রামিংয়ের গুরুত্বপূর্ণ কনসেপ্ট, যা সাধারণত লিস্ট বা অ্যারে নিয়ে কাজ করার জন্য ব্যবহৃত হয়। ডি প্রোগ্রামিং ভাষায় এই ফাংশনগুলোকে ব্যবহার করে ডেটা প্রসেসিং এবং পরিবর্তন সহজ এবং কার্যকরী করা যায়। এগুলো বিভিন্ন ধরনের ডেটা সংগ্রহ (collection) বা অ্যারে, লিস্ট, স্ট্রিং ইত্যাদি নিয়ে কাজ করতে সহায়ক।

1. Map

Map ফাংশন একটি ফাংশনকে (এখানে একটি কলব্যাক ফাংশন) প্রতিটি উপাদানের উপরে প্রয়োগ করে এবং নতুন একটি লিস্ট বা অ্যারে রিটার্ন করে, যা মূল ডেটা সংগ্রহের পরিবর্তিত (transformed) মান ধারণ করে।

Map ফাংশন সাধারণত একটি অ্যারে বা লিস্টের প্রতিটি উপাদানকে নির্দিষ্ট কোনো ফাংশন দিয়ে পরিবর্তন করে এবং ফলাফলকে একটি নতুন অ্যারে হিসেবে প্রদান করে।

উদাহরণ:

import std.stdio;
import std.algorithm;
import std.range;

void main() {
    int[] numbers = [1, 2, 3, 4, 5];

    // Map function ব্যবহার করে প্রতিটি সংখ্যা 2 গুন করা হচ্ছে
    auto doubledNumbers = numbers.map!(x => x * 2);

    writeln(doubledNumbers);  // আউটপুট: [2, 4, 6, 8, 10]
}

এখানে:

  • map! ফাংশন ব্যবহার করা হয়েছে, যা প্রতিটি উপাদানকে x => x * 2 ফাংশনের মাধ্যমে 2 গুণ করছে এবং নতুন একটি অ্যারে doubledNumbers তৈরি হচ্ছে।

2. Filter

Filter ফাংশন একটি শর্ত (predicate) নির্ধারণ করে এবং সেই শর্ত অনুযায়ী অ্যারের বা লিস্টের উপাদানগুলোকে ফিল্টার করে। এর মাধ্যমে শুধু সেই উপাদানগুলোই নির্বাচন করা হয়, যা শর্ত পূরণ করে।

উদাহরণ:

import std.stdio;
import std.algorithm;
import std.range;

void main() {
    int[] numbers = [1, 2, 3, 4, 5, 6];

    // Filter function ব্যবহার করে শুধু নির্দিষ্ট শর্ত পূরণকারী সংখ্যাগুলো রাখা হচ্ছে (যারা 2 দ্বারা বিভাজ্য)
    auto evenNumbers = numbers.filter!(x => x % 2 == 0);

    writeln(evenNumbers);  // আউটপুট: [2, 4, 6]
}

এখানে:

  • filter! ফাংশনটি শুধুমাত্র সেই উপাদানগুলোই নির্বাচন করেছে, যেগুলো 2 দ্বারা বিভাজ্য (x % 2 == 0)।

3. Reduce

Reduce ফাংশন একটি অ্যারের বা লিস্টের উপাদানগুলোকে একসাথে কম্বাইন করে একটি একক মানে রূপান্তরিত করে। এটি সাধারণত একটি অ্যাকিউমুলেটর ফাংশন ব্যবহার করে সমস্ত উপাদানকে একসাথে যোগ, গুণ, অথবা অন্য কোনো অপারেশন করে একটি ফলাফল তৈরি করে।

উদাহরণ:

import std.stdio;
import std.algorithm;
import std.range;

void main() {
    int[] numbers = [1, 2, 3, 4, 5];

    // Reduce function ব্যবহার করে সমস্ত সংখ্যার যোগফল করা হচ্ছে
    int sum = numbers.reduce!((a, b) => a + b);

    writeln(sum);  // আউটপুট: 15
}

এখানে:

  • reduce! ফাংশনটি সমস্ত উপাদানকে একসাথে যোগ করেছে, এবং ফলস্বরূপ sum এর মান ১৫ হয়েছে।

4. Combined Example: Map, Filter, and Reduce

এখন, আমরা Map, Filter, এবং Reduce তিনটি ফাংশন একসাথে ব্যবহার করার একটি উদাহরণ দেখব।

উদাহরণ:

import std.stdio;
import std.algorithm;
import std.range;

void main() {
    int[] numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

    // Filter: শুধু সঠিক সংখ্যাগুলো নির্বাচন করব (যারা 2 দ্বারা বিভাজ্য)
    auto filteredNumbers = numbers.filter!(x => x % 2 == 0);

    // Map: প্রতিটি সংখ্যাকে 2 গুণ করা হচ্ছে
    auto doubledNumbers = filteredNumbers.map!(x => x * 2);

    // Reduce: সমস্ত সংখ্যার যোগফল করা হচ্ছে
    int sum = doubledNumbers.reduce!((a, b) => a + b);

    writeln("The sum of doubled even numbers is: ", sum);  // আউটপুট: 60
}

এখানে:

  1. Filter: প্রথমে সবগুলো এমন সংখ্যা ফিল্টার করা হয়েছে, যা 2 দ্বারা বিভাজ্য।
  2. Map: তারপর প্রতিটি নির্বাচিত সংখ্যাকে 2 গুণ করা হয়েছে।
  3. Reduce: অবশেষে, সমস্ত ফলাফলকে একসাথে যোগ করা হয়েছে, যাতে আমরা মোট যোগফল 60 পেয়ে থাকি।

সারসংক্ষেপ

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

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

Content added By
Promotion

Are you sure to start over?

Loading...