LISP-এ লিস্ট (List) হল একটি অন্যতম গুরুত্বপূর্ণ ডাটা স্ট্রাকচার। এটি এলিমেন্টগুলির একটি অর্ডারড সংগ্রহ, এবং LISP এর প্রোগ্রামিংয়ের মূল উপাদান হিসেবে ব্যবহৃত হয়। LISP এ লিস্ট তৈরি এবং ম্যানিপুলেট করা (Manipulation) সহজ এবং শক্তিশালী।
এখানে LISP-এ লিস্ট তৈরি এবং ম্যানিপুলেশন সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. LISP-এ লিস্ট তৈরি (Creating Lists)
LISP-এ লিস্ট তৈরি করতে list ফাংশন বা প্যারেন্টেসিসের মাধ্যমে সরাসরি লিস্ট ডিফাইন করা হয়।
list ফাংশন ব্যবহার করে লিস্ট তৈরি:
list ফাংশন দিয়ে আপনি একাধিক এলিমেন্টের একটি লিস্ট তৈরি করতে পারেন।
উদাহরণ:
(setq mylist (list 1 2 3 4 5)) ; লিস্ট তৈরিএখানে, mylist নামক ভেরিয়েবলটি একটি লিস্ট ধারণ করে যার উপাদানগুলো হল 1, 2, 3, 4, 5।
সরাসরি লিস্ট তৈরি:
LISP-এ প্যারেন্টেসিস ব্যবহার করে সরাসরি লিস্ট তৈরি করা যায়।
উদাহরণ:
(setq mylist '(1 2 3 4 5)) ; লিস্ট তৈরিএখানে, ' (single quote) ব্যবহার করে সরাসরি লিস্ট তৈরি করা হয়েছে। এটি list ফাংশনের সমতুল্য।
২. লিস্ট Manipulation (Manipulating Lists)
LISP-এ লিস্টের সাথে বিভিন্ন ধরণের ম্যানিপুলেশন করতে পারে, যেমন এলিমেন্ট যোগ করা, এলিমেন্ট মুছে ফেলা, উপাদান বের করা ইত্যাদি।
লিস্টের প্রথম উপাদান বের করা (car)
car ফাংশন ব্যবহার করে লিস্টের প্রথম উপাদান বের করা হয়।
উদাহরণ:
(setq mylist '(1 2 3 4 5))
(car mylist) ; আউটপুট: 1এখানে, car প্রথম উপাদান 1 রিটার্ন করবে।
লিস্টের বাকি উপাদান বের করা (cdr)
cdr ফাংশন ব্যবহার করে লিস্টের প্রথম উপাদান বাদে বাকি অংশ বের করা হয়।
উদাহরণ:
(cdr mylist) ; আউটপুট: (2 3 4 5)এখানে, cdr ফাংশন লিস্টের প্রথম উপাদান বাদে বাকি অংশ (2 3 4 5) রিটার্ন করবে।
লিস্টে নতুন এলিমেন্ট যোগ করা (cons)
cons ফাংশন ব্যবহার করে লিস্টের শুরুতে একটি নতুন উপাদান যোগ করা হয়।
উদাহরণ:
(cons 0 mylist) ; আউটপুট: (0 1 2 3 4 5)এখানে, 0 একটি নতুন উপাদান হিসেবে লিস্টের শুরুতে যোগ করা হয়েছে, ফলে নতুন লিস্ট হয়ে গেছে (0 1 2 3 4 5)।
লিস্টের দৈর্ঘ্য বের করা (length)
length ফাংশন ব্যবহার করে একটি লিস্টের দৈর্ঘ্য (এলিমেন্টের সংখ্যা) বের করা হয়।
উদাহরণ:
(length mylist) ; আউটপুট: 5এখানে, mylist লিস্টের মোট ৫টি উপাদান আছে, তাই আউটপুট হবে 5।
লিস্টের একটি উপাদান পাওয়া (nth)
nth ফাংশন ব্যবহার করে লিস্টের একটি নির্দিষ্ট ইনডেক্সের উপাদান পাওয়া যায়।
উদাহরণ:
(nth 2 mylist) ; আউটপুট: 3এখানে, nth 2 দিয়ে ২য় ইনডেক্সের (তৃতীয় উপাদান) মান বের করা হয়েছে, যা 3 হবে।
লিস্টের উপাদান অনুসন্ধান (memv বা memq)
লিস্টের মধ্যে কোনো নির্দিষ্ট উপাদান আছে কিনা তা পরীক্ষা করতে memv বা memq ফাংশন ব্যবহার করা হয়।
উদাহরণ:
(memv 3 mylist) ; আউটপুট: (3 4 5)
(memv 10 mylist) ; আউটপুট: NILএখানে, 3 উপাদানটি লিস্টে পাওয়া যাবে, তাই আউটপুট হবে (3 4 5)। আর 10 উপাদানটি না থাকলে আউটপুট হবে NIL।
৩. লিস্টের কিছু বিশেষ ফাংশন
লিস্ট কনক্যাটেনেশন (append)
append ফাংশন ব্যবহার করে দুটি বা ততোধিক লিস্ট একত্রিত করা যায়।
উদাহরণ:
(setq list1 '(1 2 3))
(setq list2 '(4 5 6))
(append list1 list2) ; আউটপুট: (1 2 3 4 5 6)এখানে, দুটি লিস্ট list1 এবং list2 একত্রিত করা হয়েছে, এবং নতুন লিস্ট (1 2 3 4 5 6) রিটার্ন হয়েছে।
লিস্ট থেকে একটি উপাদান মুছে ফেলা (remove)
remove ফাংশন ব্যবহার করে লিস্ট থেকে একটি নির্দিষ্ট উপাদান মুছে ফেলা হয়।
উদাহরণ:
(remove 3 mylist) ; আউটপুট: (1 2 4 5)এখানে, 3 উপাদানটি লিস্ট থেকে মুছে ফেলা হয়েছে, এবং নতুন লিস্ট হয়ে গেছে (1 2 4 5)।
সারসংক্ষেপ
| ফাংশন | ব্যাখ্যা | উদাহরণ |
|---|---|---|
list | লিস্ট তৈরি করার জন্য ব্যবহৃত। | (list 1 2 3) |
car | লিস্টের প্রথম উপাদান বের করতে ব্যবহৃত। | (car '(1 2 3)) |
cdr | লিস্টের প্রথম উপাদান বাদে বাকি অংশ বের করতে ব্যবহৃত। | (cdr '(1 2 3)) |
cons | একটি নতুন উপাদান লিস্টের শুরুতে যোগ করতে ব্যবহৃত। | (cons 0 '(1 2 3)) |
length | লিস্টের দৈর্ঘ্য বের করতে ব্যবহৃত। | (length '(1 2 3)) |
nth | লিস্টের নির্দিষ্ট ইনডেক্সের উপাদান বের করতে ব্যবহৃত। | (nth 2 '(1 2 3)) |
memv | লিস্টে একটি উপাদান খোঁজার জন্য ব্যবহৃত। | (memv 3 '(1 2 3)) |
append | দুটি বা ততোধিক লিস্ট একত্রিত করতে ব্যবহৃত। | (append '(1 2) '(3 4)) |
remove | লিস্ট থেকে একটি নির্দিষ্ট উপাদান মুছে ফেলার জন্য ব্যবহৃত। | (remove 3 '(1 2 3)) |
LISP-এ লিস্ট তৈরি এবং ম্যানিপুলেশন অত্যন্ত শক্তিশালী এবং ব্যবহারযোগ্য। বিভিন্ন ফাংশন ব্যবহার করে লিস্টের উপাদান বের করা, যোগ করা, মুছে ফেলা ইত্যাদি কাজ সহজেই করা যায়।
Read more