সুইফট প্রোগ্রামিং – সেট

আনঅর্ডারড এবং ইউনিক ডেটা রাখার জন্য সেট ব্যবহার করা হয়। যেমনঃ

var numbers: Set = [1, 2, 3, 4, 5]
print(type(of: numbers))

যা আউটপুট দিবেঃ Set। মানে উপরে একটা ইন্টিজার সেট তৈরি করেছি। আমরা চাইলে টাইপ বলে দিতে পারি এভাবেঃ

var numbers: Set = [1, 2, 3, 4, 5]
print(type(of: numbers))

আনর্ডারড ডেটা স্টোর করার জন্য কেন বলছি, তা বুঝতে চাইলে এই নাম্বার সেট প্রিন্ট করে দেখিঃ

var numbers: Set = [1, 2, 3, 4, 5]
print(numbers)

দেখব একবার এক একটা অর্ডারে নাম্বার গুলো আউটপুট দিচ্ছে। অর্থাৎ আমাদের যখন কোন অর্ডার্ড লিস্ট লাগবে, তখন আমরা অ্যারে ব্যবহার করব। আর যদি ডেটা কোন অর্ডারে থাকে, তা গুরুতুপূর্ণ না হয়, তখন সেট ব্যবহার করতে পারি। যদিও আমরা সেট সর্ট করে নিতে পারিঃ

var numbers: Set = [1, 2, 3, 4, 5]
print(numbers.sorted())

আরেকটা টার্ম ব্যবহার করেছি যে ইউনিক ডেটা স্টোর করার জন্য সেট ব্যবহার করা হয়। একই সংখ্যা দুইবার স্টোর করে আউটপুট দেখিঃ

var numbers: Set = [1, 3, 3, 4, 5]
print(numbers)

আমরা দেখব 3 একবারই এই সেটে যোগ হয়েছে। পাঁচটি নাম্বার দিয়ে সেট ইনিশিয়ালাইজ করলেও ৪টা নাম্বার আউটপুট পেয়েছে। এর মানে হচ্ছে একই আইটেম একাধিক বার থাকলেও একবারই স্টোর করবে। এই বৈশিষ্ট্য অনেক ক্ষেত্রেই কাজে লাগবে।

অ্যারের মত সেট ইন্ডেক্সিং, নতুন আইটেম যোগ করা, কোন আইটেম রিমুভ করা ইত্যাদি করা যায়। তাই নতুন করে সেগুলো লিখলাম না। অ্যারে চ্যাপ্টার থেকে সেগুলো দেখে সেটে এপ্লাই করে দেখতে পারেন।

ম্যাথে যেমন সেটের Union, Intersection, subtraction, Symmetric Difference করা যায়, প্রোগ্রামিং এর ক্ষেত্রেও এই অপারেশন গুলো করা যায়।

সেট ইউনিয়ন

দুইটা সেটের ইউনিয়ন মানে হচ্ছে ঐ দুইটা সেটের ইউনিক সব গুলো আইটেম নিয়ে নতুন সেট। দুইটা সেটের ইউনিয়ন এভাবে করতে পারিঃ

var a: Set = [1, 2, 3, 4 ]
var b: Set = [4, 5, 6, 7]

print(a.union(b))

এখানে 1-7 পর্যন্ত সংখ্যা গুলোর একটা সেট পাবো। 4 সংখ্যাটা দুইটা সেটেই রয়েছে। যা একবারই নতুন সেটে যুক্ত হবে। আমরা চাইলে b.union(a) ও লিখতে পারি। একই রেজাল্ট পাবো।

সেট ইন্টারসেকশনঃ
দুইটা সেটের ইন্টারসেকশন মানে হচ্ছে ঐ দুইটা সেটের কমন ইউনিক আইটেম গুলোর সেট। যেমনঃ

var a: Set = [1, 2, 3, 4 ]
var b: Set = [4, 5, 6, 7]

print(b.intersection(a))

এই দুইটা সেটের মধ্যে কমন হচ্ছে 4। তাই আউটপুট পাবো 4।

সেটের সিমেট্রিক ডিফারেন্স

সহজ ভাষায় বললে দুইটা সেটের মধ্যে কমন যে আইটেম রয়েছে সেগুলো ছাড়া বাকি আইটেম গুলো। যেমনঃ

var a: Set = [1, 2, 3, 4 ]
var b: Set = [4, 5, 6, 7]

print(b.symmetricDifference(a))

এখানে নতুন সেটে 4 ছাড়া বাকি সব গুলো আইটেম পাবো।

সেট সাবস্ট্র্যাক্ট

একটা সেট থেকে আরেকটা সেটের কমন আইটেম বাদ দেওয়া। যেমনঃ

var a: Set = [1, 2, 3, 4 ]
var b: Set = [4, 5, 6, 7]

print(a.subtracting(b).sorted())

আউটপুট পাবোঃ [1, 2, 3]

sorted() ব্যবহার করেছি যেন আউটপুটের সময় সেটের আইটেম গুলো সর্ট করে দেয়। এখানে প্রথম সেট থেকে দ্বিতীয় সেট বাদ দিলে শুধু ৪ বাদ যাবে। আবার আমরা চাইলে b থেকে a বাদ দিতে পারি। তখন আউটপুট পাবো [5, 6, 7]

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

দুইটা সেট সমান কিনা, তা চেক করতে পারি is equal অপারেটর (==) দিয়ে। যেমনঃ

var a: Set = [1, 2]
var b: Set = [1, 2]

print(a==b)

যা প্রিন্ট করবে true। দুইটা সেটের আইটেম যদি এক না হতো, তাহলে প্রিন্ট করত false।

সাবসেটঃ
যদি একটা সেট B এর সব গুলো আইটেম অন্য আরেকটা সেট A তে থাকে, তবে B কে বলা হয় A এর সাবসেট। যেমনঃ

var numbers: Set = [1, 2, 3, 4, 5, 6, 7]
var odd: Set = [1, 3, 5, 7]

print(odd.isSubset(of: numbers))

এখানে number ভ্যারিয়েবলে 1-7 পর্যন্ত ন্যাচারাল নাম্বার গুলো রয়েছে। আর odd ভ্যারিয়েবলে রয়েছে 1-7 পর্যন্ত বিজোড় সংখ্যা গুলো। এর মানে হচ্ছে odd হচ্ছে number এর সাবসেট। তাই উপরের কোড প্রিন্ট করেছে true।

সুপারসেট
আবার একই ভাবে number হচ্ছে odd এর সুপারসেট। কারণ odd ভ্যারিয়েবলের সব গুলো আইটেমই number ভ্যারিয়েবলে রয়েছে।

var numbers: Set = [1, 2, 3, 4, 5, 6, 7]
var odd: Set = [1, 3, 5, 7]

print(numbers.isSuperset(of: odd))

যা প্রিন্ট করবে true

ডিসজয়েন্ট

দুইটা সেটের মধ্যে যদি কমন আইটেম আছে কি নেই, তা চেক করতে ডিসজয়েন্ট ব্যবহার করা হয়। যদি কমন ভ্যালু থাকে, তাহলে রিটার্ণ করবে false। কমন ভ্যালু না থাকলে রিটার্ণ করবে true। যেমনঃ

var a: Set = [1, 2, 3]
var b: Set = [1, 3, 5]

print(a.isDisjoint(with: b))

যা আউটপুট দিবে false। কারণ দুইটা সেটের আইটেম গুলর মধ্যে কমন আইটেম রয়েছে।

 

সুইফট প্রোগ্রামিং নিয়ে অন্যান্য লেখা গুলো পাওয়া যাবে এখানে। এছাড়া সুইফট ব্যবহার করে আইওএস অ্যাপ ডেভেলপ করা শেখা যাবে এখান থেকে।

Leave a Reply