Lists তৈরি এবং ম্যানিপুলেশন

Lists এবং Data Structures (লিস্ট এবং ডেটা স্ট্রাকচার) - প্রোলগ প্রোগ্রামিং (Prolog Programming) - Computer Programming

317

লিস্ট হল প্রোলগে একটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার যা এক বা একাধিক উপাদান ধারণ করতে পারে। প্রোলগে লিস্টের সাধারণ গঠন হল:

[Head | Tail]

এখানে:

  • Head: লিস্টের প্রথম উপাদান।
  • Tail: বাকি উপাদানগুলির লিস্ট। এটি আবার একটি লিস্ট হতে পারে বা খালি ([]) হতে পারে।

এটি হেড এবং টেইল এর মাধ্যমে লিস্টের উপাদানগুলি প্রবাহিত এবং ট্র্যাভার্স করা সহজ করে।


লিস্ট তৈরি:

লিস্ট তৈরি করতে, প্রোলগে উপাদানগুলো [Head | Tail] এর মাধ্যমে নির্দেশ করা হয়। উদাহরণস্বরূপ:

লিস্ট1([1, 2, 3, 4, 5]).

এখানে, [1, 2, 3, 4, 5] একটি লিস্ট।

লিস্টের মধ্যে হেড এবং টেইল গঠন করা যায়:

?- [1, 2, 3, 4] = [Head | Tail].

এখানে, Head হবে 1 এবং Tail হবে [2, 3, 4]


লিস্ট ম্যানিপুলেশন:

প্রোলগে, লিস্টের উপাদানগুলি সহজেই ম্যানিপুলেট করা যায়। কিছু সাধারণ অপারেশন এবং তাদের ব্যবহার:

১. লিস্টের প্রথম উপাদান (Head) বের করা:

?- [a, b, c] = [Head | Tail].

এখানে, Head হবে a এবং Tail হবে [b, c]

২. লিস্টের দৈর্ঘ্য (Length) বের করা:

লিস্ট_দৈর্ঘ্য([], 0).  % বেস কেস: খালি লিস্টের দৈর্ঘ্য 0
লিস্ট_দৈর্ঘ্য([_|Tail], Length) :- লিস্ট_দৈর্ঘ্য(Tail, Length1), Length is Length1 + 1.

এটি একটি রিকার্সিভ নিয়ম যা লিস্টের দৈর্ঘ্য বের করতে সাহায্য করে।

উদাহরণ:

?- লিস্ট_দৈর্ঘ্য([a, b, c, d], Length).

আউটপুট:

Length = 4.

৩. লিস্টের প্রথম উপাদান বের করে নতুন লিস্ট তৈরি:

আপনি যদি লিস্টের প্রথম উপাদান বের করে বাকি উপাদান নিয়ে নতুন একটি লিস্ট তৈরি করতে চান, তাহলে এই নিয়মটি ব্যবহার করা যায়:

লিস্ট_হেড_ও_টেইল([Head | Tail], Head, Tail).

উদাহরণ:

?- লিস্ট_হেড_ও_টেইল([1, 2, 3], Head, Tail).

আউটপুট:

Head = 1,
Tail = [2, 3].

৪. লিস্টের উপাদান যোগ করা (Prepend):

আপনি একটি নতুন উপাদান একটি লিস্টের শুরুতে যোগ করতে পারেন:

লিস্ট_যোগ(X, L, [X | L]).

উদাহরণ:

?- লিস্ট_যোগ(0, [1, 2, 3], NewList).

আউটপুট:

NewList = [0, 1, 2, 3].

৫. লিস্টের উপাদান মুছে ফেলা (Remove):

একটি নির্দিষ্ট উপাদান লিস্ট থেকে মুছে ফেলার জন্য এই নিয়মটি ব্যবহার করতে পারেন:

লিস্ট_মুছে_ফেলা(_, [], []).
লিস্ট_মুছে_ফেলা(X, [X | Tail], Tail).
লিস্ট_মুছে_ফেলা(X, [Head | Tail], [Head | NewTail]) :- লিস্ট_মুছে_ফেলা(X, Tail, NewTail).

উদাহরণ:

?- লিস্ট_মুছে_ফেলা(2, [1, 2, 3, 2], NewList).

আউটপুট:

NewList = [1, 3, 2].

৬. লিস্টের সব উপাদান চেক করা (Check all elements):

লিস্টের সব উপাদানকে চেক করতে এবং কোনো শর্ত পূর্ণ হলে লিস্টে সেগুলো পরিবর্তন বা ফিল্টার করতে এই নিয়ম ব্যবহার করা যায়:

লিস্ট_ফিল্টার(_, [], []).
লিস্ট_ফিল্টার(Predicate, [Head | Tail], [Head | NewTail]) :- call(Predicate, Head), লিস্ট_ফিল্টার(Predicate, Tail, NewTail).
লিস্ট_ফিল্টার(Predicate, [_ | Tail], NewTail) :- লিস্ট_ফিল্টার(Predicate, Tail, NewTail).

উদাহরণ:

?- লিস্ট_ফিল্টার(অথেক(>3), [1, 2, 3, 4, 5], Filtered).

এখানে, অথেক(>3) একটি শর্ত (predicate), যা ৩ এর বড় সংখ্যা গুলি বের করবে।


আরও কিছু লিস্ট অপারেশন:

৭. লিস্টের যোগফল বের করা (Sum of List):

লিস্টের সব উপাদানের যোগফল বের করতে রিকার্সিভ নিয়ম ব্যবহার করা যায়:

লিস্ট_যোগফল([], 0).
লিস্ট_যোগফল([Head | Tail], Sum) :- লিস্ট_যোগফল(Tail, Sum1), Sum is Head + Sum1.

উদাহরণ:

?- লিস্ট_যোগফল([1, 2, 3, 4], Sum).

আউটপুট:

Sum = 10.

৮. লিস্টের উপাদান সাজানো (Sorting List):

লিস্টের উপাদান সাজাতে প্রোলগে বিল্ট-ইন predicate sort/2 ব্যবহার করা যায়:

?- sort([3, 1, 4, 2], SortedList).

আউটপুট:

SortedList = [1, 2, 3, 4].

সারসংক্ষেপ:

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

Content added By
Promotion

Are you sure to start over?

Loading...