গোলং বাছাই স্লাইস উদাহরণ

Golam Bacha I Sla Isa Udaharana



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

উদাহরণ 1: আরোহী ক্রমে গোলং সর্ট স্লাইস

“sort.Slice()” ফাংশন হল Go-এর সর্বাগ্রে ফাংশন যা স্লাইসের উপাদানগুলিকে আরোহী ক্রম বা অবরোহ ক্রমে পুনর্বিন্যাস করে। নিচের দৃষ্টান্তটি বিবেচনা করুন যেখানে স্লাইসটি আরোহী ক্রমে সাজানো হয়েছে:

প্যাকেজ প্রধান
আমদানি (
'fmt'
'সাজান'
)
ফাংশন প্রধান () {
এমনকি স্লাইস := [] int { 10 , 2 , 8 , 4 , 0 , 6 }
fmt . Println ( 'বাছাই করা স্লাইস:' , এমনকি স্লাইস )
সাজান . স্লাইস ( এমনকি স্লাইস , ফাংশন ( i , j int ) bool {
ফিরে এমনকি স্লাইস [ i ] < ইভেন স্লাইস [ j ]
})
fmt . Println ( 'বাছাই করা টুকরা:' , এমনকি স্লাইস )
}

main() ফাংশনের শুরুতে, আমরা ইভেন স্লাইস স্লাইসকে {10, 2, 8, 4, 0, 6} মান দিয়ে সংজ্ঞায়িত করি। এই স্লাইসটি জোড় সংখ্যার একটি সংগ্রহকে উপস্থাপন করে যা প্রাথমিকভাবে সাজানো হয়নি। EvenSlice স্লাইস সাজানোর জন্য, sort.Slice() ফাংশনটি স্লাইসের সাথে নিযুক্ত করা হয়। sort.Slice() ফাংশনের ভিতরে, একটি বাছাই ফাংশন একটি আর্গুমেন্ট হিসাবে প্রদান করা হয়। এই ফাংশনটি 'i' এবং 'j' সূচকে স্লাইসের দুটি উপাদানের তুলনা করে সাজানোর ক্রম নির্ধারণ করে। EvenSlice[i] evenSlice[j] থেকে কম হলে, এটি সত্য হয়ে যায়; অন্যথায়, এটি মিথ্যা ফেরত দেয়। sort.Slice() ফাংশন এই তুলনা ফাংশন ব্যবহার করে 'evenSlice' স্লাইসের উপাদানগুলিকে আরোহী ক্রমে পুনর্বিন্যাস করতে।







ক্রমানুসারে সাজানো স্লাইসের ফলাফল নিম্নলিখিত আউটপুট স্ক্রিনে উত্পন্ন হয়:





উদাহরণ 2: গোলং বাছাই পার্ট স্লাইস

এরপরে, Go-তে sort.Slice() ফাংশন ব্যবহার করে ক্রমবর্ধমান ক্রমে নির্দিষ্ট স্লাইসের সাব-স্লাইসে বাছাই করা হয়।





প্যাকেজ প্রধান
আমদানি (
'fmt'
'সাজান'
)
ফাংশন প্রধান () {
n := [] int { 9 , 7 , 3 , 5 }
শুরু := 0
শেষ := 3
সাজান . স্লাইস ( n [ শুরু : শেষ ], ফাংশন ( i , j int ) bool {
ফিরে n [ শুরু + i ] < n [ শুরু + j ]
})
fmt . Println ( n )
}

প্রাথমিকভাবে, আমরা [9, 7, 3, 5] মান দিয়ে 'n' স্লাইস তৈরি করি। উপরন্তু, দুটি ভেরিয়েবল, 'শুরু' এবং 'শেষ', যথাক্রমে 0 এবং 3 এ সেট করা হয়েছে। এই ভেরিয়েবলগুলি 'n' স্লাইসে সূচকগুলির পরিসর নির্ধারণ করে যা সাজানো হবে। 'sort.Slice()' ফাংশনটিকে প্রথম আর্গুমেন্ট হিসাবে সাব-স্লাইস 'n[start:end]' দিয়ে ডাকা হয়। এই সাব-স্লাইসে নির্দিষ্ট সীমার মধ্যে 'n' এর উপাদান রয়েছে। এর পরে, sort.Slice() ফাংশনের ভিতরে দ্বিতীয় আর্গুমেন্ট হিসাবে একটি সাজানোর ফাংশন দেওয়া হয়।

এখানে, সেই ফাংশনটি 'i' এবং 'j' দুটি সূচক পায়, যা সাব-স্লাইসের মধ্যে উপাদানগুলিকে উপস্থাপন করে৷ সাব-স্লাইসের মধ্যে উপাদানগুলির তুলনা করার জন্য, বাছাই ফাংশনটি স্টার্ট ব্যবহার করে মূল স্লাইসে সংশ্লিষ্ট উপাদানগুলিকে অ্যাক্সেস করে৷ অফসেট। এটি n[start+i] এবং n[start+j]-এর তুলনা করে। এরপর, sort.Slice() ফাংশন প্রদত্ত সর্টিং ফাংশন ব্যবহার করে সাব-স্লাইসের মধ্যে উপাদানগুলিকে আরোহী ক্রমে পুনর্বিন্যাস করতে।



নিম্নলিখিত আউটপুটটি দেখায় যে নির্দিষ্ট পরিসরের মধ্যে উপাদানগুলি (শুরু থেকে শেষ-1) সাজানো হয়েছে, এবং সীমার বাইরের উপাদানগুলি অপরিবর্তিত রয়েছে:

উদাহরণ 3: Sort.Ints() ফাংশন ব্যবহার করে গোলং সাজান পূর্ণসংখ্যার স্লাইস

তাছাড়া, পূর্ণসংখ্যার স্লাইস বাছাই করার জন্য সবচেয়ে সুবিধাজনক হল কাস্টম বাছাই পদ্ধতি প্রয়োগ করার প্রয়োজন ছাড়াই sort.Ints() ফাংশন। এটি সরাসরি পূর্ণসংখ্যার স্লাইসে কাজ করে এবং একটি ইন-প্লেস বাছাই করে। নিম্নলিখিত প্রোগ্রাম নির্দিষ্ট পূর্ণসংখ্যা সাজান:

প্যাকেজ প্রধান
আমদানি (
'fmt'
'সাজান'
)
ফাংশন প্রধান () {
IntSlice := [] int { 10 , 13 , পনের , এগারো , 14 , 12 }
fmt . Println ( 'বাছাই করা স্লাইস:' , IntSlice )
সাজান . Ints ( IntSlice )
fmt . Println ( 'বাছাই করা টুকরা:' , IntSlice )
}

প্রথমত, আমরা [10, 13, 15, 11, 14, 12] মানগুলির সাথে 'IntSlice' স্লাইস ঘোষণা এবং শুরু করি যা প্রাথমিকভাবে সাজানো না হওয়া পূর্ণসংখ্যাগুলির একটি সংগ্রহকে উপস্থাপন করে। তারপর, 'IntSlice' সাজানোর আর্গুমেন্ট হিসাবে 'IntSlice' স্লাইস দিয়ে sort.Ints() ফাংশনটিকে ডাকা হয়। এই ক্ষেত্রে sort.Ints() ফাংশন অভ্যন্তরীণভাবে একটি অপ্টিমাইজ করা বাছাই অ্যালগরিদম অনুযায়ী স্লাইসের প্রতিটি অংশকে সাজায়। এটি মূল স্লাইসকে সরাসরি পরিবর্তন করে, এর উপাদানগুলিকে একটি সাজানো ক্রমে পুনর্বিন্যাস করে।

নিম্নলিখিত আউটপুটটি প্রথমে দেখায় যে সাজানো না হওয়া স্লাইসটি প্রথমে প্রদর্শিত হয়, তারপরে সাজানো স্লাইসটি প্রদর্শিত হয়:

উদাহরণ 4: গোলং সাজান স্ট্রিং স্লাইস

Go এছাড়াও সাজানোর প্যাকেজের sort.Strings() ফাংশন অফার করে যা একটি নির্দিষ্ট ক্রমে স্ট্রিংগুলির একটি স্লাইস সাজাতে ব্যবহৃত হয়। এখানে, নিম্নলিখিত প্রোগ্রামটি স্ট্রিংগুলির স্লাইস বাছাই করতে সহায়তা করে:

প্যাকেজ প্রধান
আমদানি (
'fmt'
'সাজান'
)
ফাংশন প্রধান () {
strSl := [] স্ট্রিং { 'গোলান' , 'অজগর' , 'জাভা' , 'পার্ল' , 'টাইপস্ক্রিপ্ট' }
সাজান . স্ট্রিংস ( strSl )
fmt . Println ( strSl )
}

আমরা প্রথমে [“গোলাং”, “পাইথন”, “জাভা”, “পার্ল”, “টাইপস্ক্রিপ্ট”] মান দিয়ে “strSl” স্লাইস স্থাপন করেছি যা সাজানো হয়নি। এর পরে, আমরা 'strSl' স্লাইসটিকে sort.Strings() ফাংশন দিয়ে সাজাই যা লেক্সিকোগ্রাফিক ক্রমে স্লাইসের উপাদানগুলিকে সাজায়। এই ফাংশনটি মূল স্লাইসকে সরাসরি পরিবর্তন করে, এর উপাদানগুলিকে তাদের ASCII মানের উপর ভিত্তি করে সাজানো ক্রমে পুনর্বিন্যাস করে।

আউটপুট স্ট্রিং স্লাইসকে ক্রমবর্ধমান পদ্ধতিতে বাছাই করে যেমনটি নিম্নোক্তভাবে দেখানো হয়েছে:

উদাহরণ 5: IntAreSort() ফাংশন ব্যবহার করে গোলং চেক সর্ট স্লাইস

যাইহোক, Go-এর sort.IntsAreSorted() ফাংশন দিয়ে, আমরা পরীক্ষা করতে পারি যে প্রদত্ত পূর্ণসংখ্যার একটি স্লাইস ঊর্ধ্বক্রম অনুসারে সাজানো হয়েছে কি না। প্রদত্ত স্লাইসের জন্য IntAreSort() ফাংশনের নিম্নলিখিত উদাহরণ প্রোগ্রামটি বিবেচনা করুন:

প্যাকেজ প্রধান
আমদানি (
'fmt'
'সাজান'
)
ফাংশন প্রধান () {
sl := [] int { - 33 , 105 , - 42 , 59 , 18 , 0 , - 3 }
fmt . Println ( 'স্লাইস:' )
fmt . Println ( 'বিন্যস্ত স্লাইস:' , sl )
ফলাফল := সাজান . IntsAreSorted ( sl )
fmt . Println ( ' \n ফলাফল:' )
fmt . Println ( 'স্লাইস বাছাই করা হয়েছে?:' , ফলাফল )
}

প্রথমত, এলোমেলো পূর্ণসংখ্যার একটি সাজানো না করা স্লাইসকে 'sl' হিসাবে সংজ্ঞায়িত করা হয়। এই স্লাইসে কোনো নির্দিষ্ট ক্রমে পূর্ণসংখ্যার সংগ্রহ নেই। এর পরে, আমরা sort.IntsAreSorted() ফাংশনকে কল করি এবং একটি আর্গুমেন্ট হিসাবে 'sl' স্লাইসটি পাস করি। এই ফাংশনটি একটি বুলিয়ান ফলাফল প্রদান করে যা নির্দেশ করে যে স্লাইস ইনপুটটি আরোহী ক্রমে সাজানো হয়েছে কিনা। তারপর, fmt.Println() ফাংশন ফলাফলগুলি প্রিন্ট করে যা প্রদত্ত স্লাইসটি সাজানো হয়েছে কিনা তা প্রত্যাবর্তিত বুলিয়ান মানের উপর ভিত্তি করে আউটপুট করে।

আউটপুটটি পূর্ণসংখ্যার একটি স্লাইস বাছাই করার জন্য মিথ্যা প্রদর্শন করে কারণ এটি সাজানো হয়নি:

উদাহরণ 6: গোলং রিভার্স সর্ট স্লাইস

আরও, Go-তে সাজানোর প্যাকেজ থেকে sortReverse() এবং sortStringSlice() ফাংশন ব্যবহার করে, আমরা স্ট্রিংগুলির একটি স্লাইসকে বিপরীতভাবে সাজাতে পারি। নিম্নলিখিত প্রোগ্রামটি sort.Reverse() ফাংশনের কাজ প্রদর্শন করে:

প্যাকেজ প্রধান
আমদানি (
'fmt'
'সাজান'
)
ফাংশন প্রধান () {
vowelSlice := [] স্ট্রিং { 'এইটা' , 'একটি' , 'আমি' , 'ভিতরে' , 'ও' }
fmt . Println ( 'বাছাই করার আগে :' , vowelSlice )
সাজান . সাজান ( সাজান . বিপরীত ( সাজান . স্ট্রিং স্লাইস ( vowelSlice )))
fmt . Println ( 'বাছাই করার পর :' , vowelSlice )
}

আমরা 'vowelSlice' স্ট্রিং এর একটি স্লাইস সংজ্ঞায়িত করে শুরু করি যাতে স্বরবর্ণ 'e', 'a', 'i', 'u', এবং 'o' থাকে। স্ট্রিংগুলির নির্দিষ্ট স্লাইসের প্রাথমিক বিষয়বস্তু প্রথমে 'প্রিন্ট' ফাংশন ব্যবহার করে মুদ্রিত হয়। এরপরে, সাজানোর অপারেশনটি sort.Sort() ফাংশন ব্যবহার করে সঞ্চালিত হয় sort.Reverse() এবং sort.StringSlice() ফাংশন আর্গুমেন্ট হিসেবে। এখানে, “sort.Reverse()” একটি নতুন টাইপ তৈরি করে যা উপাদানের ক্রমকে বিপরীত করে। এটি 'sort.StringSlice' টাইপটিকে তার আর্গুমেন্ট হিসাবে নেয় যা vowelSlice কে একটি সাজানো যায় এমন টাইপে রূপান্তর করে।

এখানে আউটপুট বিপরীত বর্ণানুক্রমিক ক্রমে স্বরবর্ণ প্রদর্শন করে:

উপসংহার

আমরা প্রদত্ত স্লাইস সাজানোর উদাহরণ সহ বিভিন্ন বাছাই ফাংশন অনুসন্ধান করেছি। আমরা সাব-স্লাইস বাছাই এবং একটি স্লাইস ইতিমধ্যে বাছাই করা হয়েছে কিনা তা পরীক্ষা করার বিষয়েও কভার করেছি। তাই, আমরা তাদের গো প্রকল্পগুলিতে বাছাই করা চ্যালেঞ্জগুলির একটি বিস্তৃত পরিসর মোকাবেলা করার জন্য সাজানোর প্যাকেজের ক্ষমতাগুলি ব্যবহার করতে পারি।